| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Цикл for |
| Автор: PrinceOFF 12.4.2016, 17:10 | ||||
Задача: Нужно вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Полученную сумму вывести на экран.
К примеру - при вводе "1", "2", "3" и "сумма" данный код выводит на экран "4":
Почему не считается сумма чисел? Почему 13 строка не подсчитывает сумму? Просьба не писать готовый код и куски кода! Я его и так могу посмотреть. Направьте словами, если не сложно. |
| Автор: Kircul 12.4.2016, 20:48 | ||
Попробуй ввести так:
Что-то мне подсказывает что тебя ждет сюрприз. |
| Автор: PrinceOFF 13.4.2016, 09:30 | ||||
Да знаю я, что "сюрприз"... В 14 строке у меня получается не условие, как я хотел, а считывание с клавиатуры, что мне не надо... Если я выношу это условие за пределы цикла и приравниваю его к переменной, то опять нарушается условие задачи и эта переменная первая будет получать какое-то значение с клавиатуры (строка 5):
К тому же выбрасывается исключение:
Алгоритм для себя вывел такой: 1. Считываем поток с клавиатуры. 2. Анализируем: 3. Если число - записываем его в переменную sum. 4. Если строка "сумма" - выводим sout с параметром sum, если строка !"сумма" - продолжаем ввод с клавиатуры дальше. Пробовал разные циклы (for, do-while...). Не получается организовать условия (как видно из приведенного выше кода)... |
| Автор: sgrey 14.4.2016, 05:58 |
| а считывать ввод в строковую переменную пробовал? |
| Автор: PrinceOFF 14.4.2016, 10:22 | ||||||
Пробовал:
Выбрасывает исключение... Я так понимаю, что я неправильно сформировал условие в строке 10? Или так - будет более правильно по логике:
Но все равно исключение выбрасывает |
| Автор: PrinceOFF 14.4.2016, 11:32 | ||
| I've done it! Короче, я устал бороться с "ветряными мельницами" и решил задачу через исключение:
Но! На данном этапе учебы я вообще не должен знать, что такое исключение, поэтому фактически задача не решена. Т.е. решена, но не так, как ее решило большинство людей... Наверное надо думать дальше... |
| Автор: sgrey 14.4.2016, 14:21 | ||
возьми свой последний код, и сравнивай строку как раньше
в джаве нельзя строки сравнивать через == и != - они сравнивают ссылки на объект, а не его значение |
| Автор: PrinceOFF 14.4.2016, 15:57 | ||
Ну вот как-то так получается:
Т.е. то, что я решил в предыдущем сообщении по сути не правильно? |
| Автор: PrinceOFF 15.4.2016, 10:45 |
| Ясно. Наверное это все попозже будет, пока по условиям задачи это не требуется) |
| Автор: _zorn_ 15.4.2016, 18:14 | ||||||
Великая ява...
почему не
??? (это конечно не к яве вопрос). А "всего то" надо было
|
| Автор: PrinceOFF 15.4.2016, 18:42 | ||||||
Мне сочетание этих трех букв больше всего нравится (я имею в виду for) и приятно для слуха |
| Автор: _zorn_ 15.4.2016, 19:24 | ||
| Выглядит ужасно Это сейчас у тебя академический интерес, но потом же это войдет в привычку... и кто то будет материться... если твой код кроме тебя к кому нибудь попадет конечно. Ты смог бы сходу сказать что делает for (;true;) если только учился программированию ? Все то что вынуждает ВСПОМИНАТЬ конструкции ЗЛО. Это сейчас ты балуешься циклами, а в будущем начнешь называть классы MBSC. В рассшифровке MyBestSuperClass... разве не понятно ? Я веду к тому что ОБЩЕПРИНЯТО бесконечные циклы через while (true) делать. А если однажды ты напишешь for (true;;) ??? Долго баг искать будешь УВЕРЕННЫМ ЧТО У ТЕБЯ ВСЕ РОВНО ? Сказки ЧТО ТЫ НИКОГДА ТАКОГО НЕ НАПИШЕШЬ можешь оставить при себе А еще в пхп клевое выражение есть
Что выведет этот код ? Задача на внимательность... Вот после таких "задач" и задумайся, а стоит ли вые.. в написании. Я в свое время почти полдня потратил чтобы понять почему мой код работает по космическим законам, а не по моим... |
| Автор: PrinceOFF 15.4.2016, 21:25 | ||||||||
| 1) Я понял - "ужасно". 2) Не войдет в привычку, потому как - п.1) 3) Я не учился программированию и классической университетской базы у меня нет. Просто вот изучаю потихоньку java. 4) Не понял эту фразу:
5) Эту фразу тоже не понял:
В смысле - расшифровка ясна, а вот почему я начну называть классы именно в стиле MBSC - нет, не понял. Никогда так классы не называл, даже в маленьких задачках, но если ты советуешь, то я попробую 6) Не изучал пхп...
Поэтому ХЗ что это выражение обозначает. Может "0"? Хотя я не внимательный...
Вот видишь, ты "все знаешь" (понимаешь о чем я), а все равно ошибку допустил, а я так... пол шажка сделал... потому и не знаю того, о чем ты пишешь... P.S. Я все же решил дописать... Мало ли, не та тональность ответа, вдруг))) На самом деле спасибо за комментарий, потому что, все что говорится, все, что я слышу от программистов - это в любом случае откладывается в памяти - осознанно или неосознанно - и это хорошо. Это советы, это опыт... |
| Автор: _zorn_ 15.4.2016, 22:21 | ||||
Так и пытаюсь тебя от своих ошибок избавить Для начала объясню что тут происходит, а как это получилось думаю сам поймёшь )
точка с запятой после цикла означает "пустой цикл" (просто тупо будут перебираться условия пока он не закончится). Сами по себе фигурные скобки просто выделяют блок в другой области видимости (scope). т.е. ты впринципе в любом месте кода можешь заюзать. А так как цикл закончен то мы просто выполняем выражение. В итоге получается как будто цикл прошел один раз. У меня получилось е..тня просто и за за того что на автомате поставил точку с запятой. Тут конечно виноват пхп что позволяет такое непотребство, но не зарекайся что ява тебя не зае... своей через чур строгой типизацией. По своему опыту скажу - строгая типизация НАКАЛЯЕТ. А проблемы которые она ПЫТАЕТСЯ решить, решаются одним подобным моему факапом (то есть просто надо разобратсья). Только вот факап случается гораздо реже, чем приходится пользоватьсяс этими Integer.valueOf() ЗЫ: Да еще вот это вот по каждому чиху бросать исключение в яве НАКАЛЯЕТ. В итоге все делают throws а дальше е.. как хотите. |