Если подвигать код вот так:
public static void addPrice(int applesPrice) {
//напишите тут ваш код
applesPrice += applesPrice;
System.out.println(applesPrice);
То вывод будет таким:
100
200
Стоимость яблок 0
Process finished with exit code 0
Внимание вопрос:
Почему суммирует сам себя и почему только два раза?
Igor
5 уровень
Про суммацию
Решен
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
quer
30 октября 2018, 20:16
Если вставить ваш код в задачу, то он не суммирует сам себя. Измените цену яблок и увидите.
Статическая переменная существует в одном экземпляре.
Первый раз applesPrice += applesPrice (первая цена цена 50) applesPrice = 50+ 50 = 100
Второй раз applesPrice += applesPrice (вторая цена 100) applesPrice = 100+ 100 = 200
Другими словами, если ей передать цену вторых яблук = 100, то 50 пропадет.
0
Igor
30 октября 2018, 20:19
это кусок кода.
смотрите ниже дополнительные комменты.
0
quer
30 октября 2018, 20:20
Ну я понял, что разобрались уже
0
--------Master
30 октября 2018, 18:27
Я хз, что подразумевается под "подвижением кода", но приведенный тобой огрызок выводит в консоль только одну строку - удвоенное значение принятого параметра.
0
Igor
30 октября 2018, 19:23
Спасибо за пояснение.
Вернулся к задаче.
Ещё поигрался с написанием кода и выводом результата получившегося и немного прояснилось и запомнилось.
0
Илья ГековMaster
30 октября 2018, 19:45
Намек был на то, что к вопросу стоит прикладывать весь код целиком. Во-первых, мы не видим вашей реализации, чтобы понять, что вы имеете в виду, во-вторых тот, у кого нет подписки на данный момент, не видит ни условий задачи ни исходных данных.
+1
Igor
30 октября 2018, 20:16
Не выводил весь код, чтоб не раскрывать решение...
Задача на усвоение видимости/доступа переменных/методов:
Код уже решенной:
public class Solution{
public static void main(String[] args) {
Apple apple = new Apple();
apple.addPrice(50);
Apple apple2 = new Apple();
apple2.addPrice(100);
System.out.println("Стоимость яблок " + Apple.applesPrice);
}
public static class Apple {
public static int applesPrice = 0;
public static void addPrice(int applesPrice) {
//напишите тут ваш код
Apple.applesPrice += applesPrice;
}
}
}
Вывод на экран:
Стоимость яблок 150
Если "addPrice" делаем не статическим, соответственно не используем адресное указание "Apple", то код выглядит:
public class Test {
public static void main(String[] args) {
Apple apple = new Apple();
apple.addPrice(50);
Apple apple2 = new Apple();
apple2.addPrice(100);
System.out.println("Стоимость яблок " + Apple.applesPrice);
}
public static class Apple {
public static int applesPrice = 0;
public void addPrice(int applesPrice) {
//напишите тут ваш код
applesPrice += applesPrice;
System.out.println(applesPrice);
}
}
}
Вывод на экран:
100
200
Стоимость яблок 0
Вот тут и был вопрос, но после пояснений "Егорро", вернулся и поразбирался ещё и как уже сказал стало чуть понятнее:
полтинник приходит в метод addPrice, сам к себе прибавляется, выводится на экран и всё.
затем тоже самое делает стольник.
0
--------Master
30 октября 2018, 20:20решение
Apple.applesPrice - статическая переменная applesPrice, объявленная в классе Apple. applesPrice (прибавляемое значение) - переменная applesPrice, задаваемая в объявлении метода как параметр: addPrice(int applesPrice).
Соответственно, в коде, приведенном изначально, ты к этой переменной прибавлял ее же значение (по сути, умножал на 2), а статическую переменную вообще не трогал.
+4
Igor
30 октября 2018, 20:22
Да. До этого додумался лишь после того как с Вашей подачи вернулся к задаче ещё раз.
Спасибо.
0