Вроде все верно, но почему-то не выполняется
public class Solution {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
boolean isExit = false;
int a = 0;
while (!isExit) {
String str = console.nextLine();
if (str.equals("ENTER")) {
isExit = true;
} else {
int b = console.nextInt();
a += b;
}
}
System.out.println(a);
}
}
Anonymous #2492578
36 уровень
Почему нужно парсинговать Int?
Архивный
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #2492578
12 января 2021, 12:54
Ага. Иначе множества не пересекаются, я понял. Спасибо
0
hidden #2322530
12 января 2021, 12:51
ты считываешь и проверяешь разные данные.
проверять надо ту же строку, которую ты собираешься парсить
0
Anonymous #2492578
12 января 2021, 15:00
Все равно не понимаю, зачем нам нужна эта строчка:
int newNumber = Integer.parseInt(stop);
Мы сначала делаем цикл, который заканчивается при вводе нужного слова. Но почему тогда мы не можем отдельно считать прибавление введенных чисел и не дождаться того момента, пока пользователь не введет "ENTER"?
Как это вообще возможно на глубинном уровне системы?
Мы вводим переменную для тех чисел, которые вводят с консоли и сразу начинаем их парсить.
Вот этот кусок:
} else {
int number = Integer.parseInt(str);
sum += number;
number же здесь высчитывается от того, что мы парсим строку, но как в строку могут заноситься значения типа int? и почему мы должны делать ссылку на строку, а не на сам сканнер?
Ведь вводимые данные следующие: число, число, число, ENTER - это все элементы множества scanner. Соответственно, объекты типа String - принадлежать строке (ENTER), а числа - int.
почему нельзя сделать так:
String str = scanner.nextLine();
int a = scanner.nextInt();
Почему тогда вырисовывается следующая схема: scanner -> String -> int, а не
scanner -> String
-> int
Заранее благодарю!
0
Ksenia VolkovaJava Developer в DXCMaster
12 января 2021, 15:08
number же здесь высчитывается от того, что мы парсим строку, но как в строку могут заноситься значения типа int?
Когда ты что-то вводишь в консоль - это всегда строка, т.е. набор символов.
Дальше ты эту строку можешь попробовать преобразовать в какой-то другой тип данных.
Допустим ты ввел
Это не int со значением 25, это два символа (char) - один имеет значение 50, другой - 53. Для того, чтобы из этих двух символов получить число 25, и нужен parseInt()
Ведь вводимые данные следующие: число, число, число, ENTER - это все элементы множества scanner. Соответственно, объекты типа String - принадлежать строке (ENTER), а числа - int.
Что такое "множество scanner"? scanner - это объект, который считывает и возвращает данные, введенные с клавиатуры (в данном случае).
Метод nextInt() вернет int, метод nextLine() вернет String.
Если ты напишешь
твой сканер сначала считает строку - и положит ее в переменную str, а потом считает число (если оно есть) - и положит в переменную a.
Причем если ты введешь
то в переменную str он положит строку "25". А потом при попытке преобразовать "ENTER" в число выдаст ошибку.
+1
Anonymous #2492578
12 января 2021, 16:31
Понял, спасибо! Тогда мы наперед не знаем, какие будут символы и для перестраховки машины лучше делать так: объединять за счет парсинга две переменные: типа String и int. Тогда все числа уйдут в int, а строчки - в String. Тогда идущая первой String принимает на себя значения, а те, что числовые - идут за счет парсинга int. Я правильно понимаю логику машины?
0
Ksenia VolkovaJava Developer в DXCMaster
12 января 2021, 18:35
Мне бы сначала понять твою логику... Такое ощущение, что мы на разных языках говорим ))
Тогда идущая первой String принимает на себя значения, а те, что числовые - идут за счет парсинга int.
???
Ты когда считываешь сканером строку (то есть набор символов до следующего переноса строки), ты не знаешь заранее - то ли там строка "ENTER", то ли число... Поэтому ты сначала проверяешь эту строку, не равна ли она "ENTER", а если нет - тогда парсишь ее в число.
0
Anonymous #2492578
12 января 2021, 19:23
да, я это имел в виду. просто в прошлых заданиях такой смычки не было)
0