Консоль-копилка

  • 8
Представим, что у нас есть свинья-копилка. В неё можно складывать монетки, пока в какой-то момент вы её не разобьете. Давайте напишем консольный эмулятор такой копилки: будем вводить с клавиатуры числа и складывать их до тех пор, пока не «разобьем» этот процесс специальным словом «сумма». После этого программа должна вывести нам накопленную сумму.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (244)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alexx Dorofeev
Уровень 9, Санкт-Петербург
1 июня, 08:03
блин, кучу времени убил только потому что пытался второй раз прочитать строку из буфера, вместо того чтоб распарсить уже прочитанную и != "сумма", вот что значит мало спать :)
Максим Белоусов
Уровень 8, Москва, Россия
24 мая, 19:40
Почему не проходит валидацию если вместо int sum = 0; пишешь int sum? Переменная типа int же по умолчанию должна быть 0?
Павел Соловьёв
Уровень 5, Санкт-Петербург
24 мая, 21:23
Zhanir Ex
Уровень 9, Алматы
23 мая, 17:12
код получился коротким, валидацию прошёл, но сомневаюсь что-то:
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        (тут объявляю переменную t c нулевым значением);
        while (true)
        {
            String s = buffer.readLine();
            if (s.equals("сумма"))
                break;
                t += Integer.parseInt(s);
        }
        System.out.println(t);
Mike McKein
Уровень 16, Могилев , Белоруссия
27 апреля, 18:50
в цикле добавил условие !s.equals("сумма") условие true: a = a + Integer.parseInt(s) т.е. слово "сумма" уже не будет преобразовываться в int. Спасибо за внимание.
Marat Minnigaliev
Уровень 11
26 апреля, 03:12
если хотите немного усложнить задачу, пишите код в среде IntelliJ IDEA)
Stepan
Уровень 15, Киев
29 марта, 19:13
Обратите внимание, что в выводе не должно быть ничего лишнего кроме суммы! Потому что через это не проходит валидация! Задача простая, но из-за этого убил 15 мин и немного нервов.
Kuksh
Уровень 14
6 апреля, 09:04
Ох, спасибо за комментарий - сберег мои нервы)) Я главное полностью понимаю как работает код - мол объявили Int sum = 0; за пределами while, далее думаем как программа - входим в бесконечный цикл (true) - видим String name - запрос на ввод и сохранение в name строки. Далее условие из выхода цикла, где условие (проверка name на слово "сумма") true = входим в тело if (), false - идем считать сумму переводя строчные данные в целочисленные и занося в sum += переведенное число; Далее нам надо понять, вот мы ввели одно число и получилось sum = 0 + 123; Как выйти корректно из цикла while, если он (true) - значит нам надо залезть в цикл if (выполнив условие ввода слова "сумма") и запросить вывод sum в Консоль и дальше натыкаемся на break; и покидаем цикл while. Но я вот записал System.out.println("сумма " + sum); и на этом впал в ступор сначала, когда пытался понять, что я не так делаю - ведь число одно ввел, сумму посчитал 0+123, далее я вывожу его и завершаю программу, а валидатор ругается) В общем спасибо, а этот ответ может кому поможет из новичков в будущем)
uncle-fro
Уровень 9
11 апреля, 15:10
Блин, я 2 попытки потратил из-за вывода "сумма = " + sum😡
Simpson
Уровень 9, Белгород, Россия
10 марта, 18:25
довольно легкая на самом деле. Условие a.equals() идет сразу после ввода строки. Только потом строка преобразовывается в число int i = Integer.parseInt(a); ну и далее c = c + i ;
Дмитрий
Уровень 14
14 февраля, 16:16
Ну вставлю и я свои 5 копеек =) 1. Объявляем переменные "суммы" и "строки" 2. В условий цикла while считываем строку и проверяем чтоб она не совпадала с кодовым словом while(!(str = reader.readLine()).equals("сумма")) 3. В цикле парсим считанную строку и суммируем result += Integer.parseInt(str) 4. Счастливые выводим итог =)
Олег Java developer
2 февраля, 11:54
Попробуйте скопировать данный класс в текстовый документ, сохранить как java файл, скомпилировать и запустить JVM. Увидите интересную ошибку, при работающим коде в IDE. Вспомните навыки работы в командной строке.
VasliyD
Уровень 22, Москва
9 февраля, 20:11
Не проходит вариант с кириллицей. Наверное, как-то связано с неюникодностью виндовой командной строки?
Rodion
Уровень 15, Мюнхен
26 января, 21:32
Прикольно, не сразу допер, что числа нужно вводить через стринг, а уже после цикла переводить в инт и находить их сумму...Теперь стало ясно для чего порой данные вводятся в форма стринг и после переводятся в инт. Если забыли тут ссылка на лекцию: https://javarush.ru/quests/lectures/questsyntax.level03.lecture07
Alexander Mul
Уровень 25, Warsaw
27 января, 20:41
Не после цикла а после проверки if (s1.equals("сумма")) внутри ещё цикла, потом переводишь в число и суммируешь и после цикла уже выводишь System.out.println(Sum);
Rodion
Уровень 15, Мюнхен
27 января, 21:23
да, именно так