Объясните пожалуйста для чего в правильном решении используется Integer.parseInt, в то время как обычный nextInt() так же справляется с задачей.
Scanner console = new Scanner(System.in);
int n = console.nextInt(); // в правильном решении int n = Integer.parseInt(console.nextLine());
multiArray = new int[n][];
for (int i = 0; i < n; i++) {
int size = console.nextInt(); // в правильном решении int size = Integer.parseInt(console.nextLine());
multiArray[i] = new int[size];
}
Anton
34 уровень
Внутри есть правильно решение, у меня вопрос про Integer.parseInt.
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
CondrCat
26 мая 2021, 16:32решение
Метод nextInt может работать некорректно. Например в таком коде
это происходит потому, что он считывает только число игнорируя перенос строки \n, который принимается следующим за ним методом nextLine().
он выдаст такой результат:
+1
Anton Software Developer в SMIT
27 мая 2021, 07:10
Спасибо, интересный пример. Только я что-то до конца все равно не понял, почему так происходит, получается он пропускает следующую команду String s2 = scan.nextLine(); и сразу выдает вывод на экран. А как ты про это узнал, где-то в лекциях было про это?
+1
CondrCat
27 мая 2021, 07:33полезный
когда ты вводишь число или строку - ты нажимаешь клавиши, а затем Enter - он принимается потоком, как знак переноса строки (\n) он нигде не отображается, но он есть. Метод nextInt() его не учитывает и он как бы зависает. При вызове nextLine() поток сразу вставляет в него зависший \n и программа идет дальше. Получается что ты как будто нажал Enter когда он на самом деле из предыдущего значения int.
+3
CondrCat
27 мая 2021, 07:38
Потоки будут изучаться позже, так что сильно не заморачивайся, просто имей ввиду, потом все встанет на свои места))) Я столкнулся с этим когда решал задания на каком-то ресурсе, потом много гуглил и нашел. задания отсюда по моему.
0
Anton Software Developer в SMIT
27 мая 2021, 07:39
Спасибо! Да, чувствую пойдет время переворить эту нформацию, но все равно интересно было узнать про такую штуку.
0
Ksenia Volkova Java Developer в DXC Master
26 мая 2021, 16:14решение
Можно и так, и так.
Внутри метода nextInt() все равно используется тот же Integer.parseInt()
+2
Anton Software Developer в SMIT
27 мая 2021, 07:10
Спасибо!
+1