1

Не понимаю, почему мой массив строк прекращает работу ввода на 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);
    }

Как это можно исправить?

trapluv
  • 11

1 Answers1

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. а зачем Вы еще и массив фиксированной длины создаете, если дальше работаете со списком?