#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()
. Поищите несколько примеров по этому поводу.
Надеюсь, это поможет.