Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ArrayList<String> list = new ArrayList<String>();
for (int c = 0; c<n; c++) {
list.add(scanner.nextLine());
}
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
}
Подскажите пожалуйста, почему со Scanner не получается решить задачу таким образом. Если я ввожу n=5, то почему то могу вести только 4 значения в массив.
Как это работает?
Necris174
37 уровень
Scanner
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Артем DivertittoSenior Android-разработчи в United TechMaster
29 июня 2018, 13:08
Потому что nextInt() не считывает символ переноса строки. То есть второй символ будет перенос строки. И того получается:
int n = 5. list.get(0) = "\n"......
0
Necris174
29 июня 2018, 13:35
Как проще решить эту проблему?
0
Артем DivertittoSenior Android-разработчи в United TechMaster
29 июня 2018, 13:54
Так же как в цикле
0
Necris174
29 июня 2018, 14:02
Благодарю.
0
NodeOneExpert
29 июня 2018, 12:54
i = 0 - 1 значение, i = 1 - 2 значение, i = 2 - 3 зн, i = 3 - 4 зн, i = 4 - 5 зн, i = 5 - вышли из цикла.
Все сходится вводим 5 значений. Почему вы решили что вводите только четыре?
0
Necris174
29 июня 2018, 12:56
public class Solution {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ArrayList<String> list = new ArrayList<String>();
for (int c = 0; c<n; c++) {
list.add(scanner.nextLine());
}
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
}
}
//напишите тут ваш код
}
Если ввожу 1, программа закрывается.
0