Чтение текста с консоли в java 8

#java #java-8

#java #java-8

Вопрос:

У меня есть 2 строки в консоли, одна из которых — это размер массива, а вторая строка — элементы в массиве, и элементы разделены пробелом. Мне нужно прочитать эти элементы как целое число и передать его функции в виде массива, такого как GetInput(int[] nums).

 Ex:
5
1 2 2 3 3
  

Как это сделать в Java 8 с помощью буферизованного считывателя?

Я пробовал приведенный ниже код, но это не то, что я ожидал.

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int t = Integer.parseInt(br.readLine());
System.out.println("Array Size:"   t);
int input[] = new int[t];

for (int i = 0; i < t; i  ) {
    input[i] = Integer.parseInt(br.readLine());
}

for (int i = 0; i < input.length; i  ) {
    System.out.println(input[i]);
}
  

Комментарии:

1. Вы уже пробовали что-нибудь? Где именно вы застряли?

2. Чтобы получить отдельные значения int из строки, содержащей 5 значений, разделенных пробелами, вам нужно преобразовать строку в строку, разбить ее на отдельные токены, а затем разобрать эти токены на их значения int. Класс BufferedReader бесполезен для получения отдельных токенов из входных данных. Класс Scanner имеет полезные методы для этого.

3. » не то, что я ожидаю » — Не могли бы вы также, пожалуйста, поделиться с нами результатом, а затем также объяснить ожидаемый результат?

4. @NormR Согласен. Просто хочу упомянуть, что вы все еще можете использовать его для чтения по строкам, а затем split использовать строку с String#split помощью.

5. Я новичок в Java и почему я получаю downvote: (

Ответ №1:

Почему бы просто не использовать сканер? Вы можете прочитать две строки с помощью Scanner.nextLine() . Например:

 import java.util.*;  
public class ScannerClassExample {    
    public static void main(String args[]){
        //Make a new Scanner reading the System input
        Scanner scanner = new Scanner(System.in);
        //Read the first line
        String arraySize = scanner.nextLine();
        //Read the elements and split on spaces
        String elementsLine = scanner.nextLine();
        String[] elements = elementsLine.split(" ");
        //If you want them to be integers, you could use this
        int[] intElements = new int[elements.length];
        for (int i = 0; i < elements.length; i  ) {
            intElements[i] = Integer.parseInt(elements[i]);
        }
        scanner.close();
    }
}
  

Если вы используете это, я также рекомендую использовать scanner.hasNext() . Поищите несколько примеров по этому поводу.

Надеюсь, это поможет.