Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачи на модификатор "Static" 
:(
    Опции темы
PrinceOFF
Дата 24.3.2016, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.10.2013
Где: Минск, РБ

Репутация: нет
Всего: нет



Такая задача на javarush:

Код

/* Реализовать метод addPrice
Реализовать метод addPrice(int applesPrice), чтобы при его вызове суммарная стоимость яблок увеличивалось на переданное значение.
За суммарную стоимость яблок отвечает переменная public static int applesPrice.
*/
public class Solution
{
    public static void main(String[] args) {
        Apple apple = new Apple();
        Apple.addPrice(50);
        Apple apple2 = new Apple();
        Apple.addPrice(100);
        System.out.println("Apples price is " + Apple.applesPrice);
    }

    public static class Apple{
        public static int applesPrice = 0;

        public static void addPrice(int applesPrice){
            //напишите тут ваш код
        }
    }
}


Что я понял из условия? Надо просуммировать стоимость apple и apple2 и вывести сумму с помощью System.out.println("Apples price is " + Apple.applesPrice).
Решил (для себя) эту задачу так:

Код

public class Solution
{
    public static void main(String[] args) {
        Apple apple = new Apple();
        Apple.addPrice(50);
        Apple apple2 = new Apple();
        Apple.addPrice(100);
        System.out.println("Apples price is " + Apple.applesPrice);
    }

    public static class Apple{
        public static int applesPrice = 0;

        public static int addPrice(int applesPrice){
            Apple.applesPrice = applesPrice + Apple.applesPrice;
            return Apple.applesPrice;            
        }
    }
}


Поскольку ничего трогать нельзя кроме статического метода addPrice(int applesPrice):
1. В строке 15 обратился к статической переменной applesPrice (через имя статического класса) и присвоил ей новое значение, которое состоит из суммы полученного методом значения "50" (строка 5) и первоначального значения "0" (строка 12).
2. В строке 16 вернул переопределенное полученное значение applesPrice, равное "50". Т.е. applesPrice в строке 12 уже должно быть равно "50".
3. Повторный вызов метода addPrice(int applesPrice) из строки 7 передает ему значение "100". Строка 15 суммирует полученное "50"+ переданное "100" и вновь переопределяет переменную applesPrice на новое значение "150".
4. В строке 16 вновь возвращается переопределенное полученное значение applesPrice, равное "150" в строку 12.
5. В строке 8 на экран выводится значение applesPrice "150".

По-моей логике задача решается так, но javarush ругается, что решение не верно... Ну, ХЗ... 
Я, правда, тип метода addPrice(int applesPrice) изменил, чтобы return добавить... Может по-другому надо было..?

Не прошу давать решение, если вы видите его по другому, и писать код. Прошу словами указать, что я не верно понял в условии задачи или реализации методов и переменных с модификатором stastic.

Это сообщение отредактировал(а) PrinceOFF - 24.3.2016, 16:48
PM   Вверх
zera
Дата 25.3.2016, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 19.1.2006
Где: saint-petersburg

Репутация: нет
Всего: 9



так а зачем return?
PM MAIL   Вверх
PrinceOFF
Дата 25.3.2016, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.10.2013
Где: Минск, РБ

Репутация: нет
Всего: нет



Цитата(zera @ 25.3.2016,  10:41)
так а зачем return?

Это шутка?
Если нет, то return возвращает результат работы метода... В данном случае переопределяет значение статической переменной.

Или вы намекаете, что можно без return как-то с помощью метода переопределить значение статической переменной?

Это сообщение отредактировал(а) PrinceOFF - 25.3.2016, 11:25
PM   Вверх
vvm
Дата 25.3.2016, 17:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

Apple.applesPrice += applesPrice;


Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
vvm
Дата 25.3.2016, 17:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











return убрать, оставить как было void.
Вы модифицируете статическую переменную.
То есть обращаетесь к ней по ссылке. Соответственно будет модифицирована
переменная класса, а не переменная объекта.
  

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
PrinceOFF
Дата 25.3.2016, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 21.10.2013
Где: Минск, РБ

Репутация: нет
Всего: нет



Всем спасибо. Задачу я уже решил без модификатора return.
В одну строчку, оказывается можно было:
Код

public static void addPrice(int applesPrice){
            Apple.applesPrice = applesPrice + Apple.applesPrice;
        }

Ну, на то она и учеба.

Кстати, vvm, хорошо, что я зашел на форум чтобы написать о том, что ответ я уже нашел, иначе было бы confuse... Я в первом посте писал "Не прошу давать решение... Прошу словами указать...". Мне не важен ответ в виде кода, как таковой, мне важно самому понять, что задачу мОжно сделать иначе и получить устное указание "куда копать"...))


PM   Вверх
_zorn_
Дата 29.3.2016, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(PrinceOFF @  26.3.2016,  02:24 Найти цитируемый пост)
без модификатора return.

return НЕ МОДИФИКАТОР
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.