Как заполнить массив строк Java?
Не понимаю, почему мой массив строк прекращает работу ввода на 2-ом элементе (Ввожу строки типа: MIKHAIL VLADISLAV GRIGORY)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] mas = new String[n];
System.out.println(mas.length);
List<String> SomeArray = new ArrayList<>(n);
for(int i = 0; i < n; i++){
SomeArray.add(sc.nextLine());
}
System.out.println(SomeArray);
}
Как это можно исправить?
Ответы (1 шт):
Проблема в том, что nextInt() возвращает int, как и описано.
Только он не дочитывает строку после того, как закончился поиск числа.
А, вообще говоря, там еще есть конец строки. И получается, что когда Вы делаете
for(int i = 0; i < n; i++){
SomeArray.add(sc.nextLine());
}
Вы на самом деле сначала дочитываете строку, в которой вводили int, а потом только начинаете добавлять элементы списка.
Будет наглядно, если попробуете указать, что у Вас будет один элемент. Попробуйте.
Можно, например, попробовать получить строку, а из нее уже получить int:
Int n = Integer.parseInt(sc.nextLine());
или "проталкивать" строку после получения int:
int n = sc.nextInt();
sc.nextLine();
P.S. а зачем Вы еще и массив фиксированной длины создаете, если дальше работаете со списком?