Проблема
Привет, ребята, моя проблема в том, чтобы выяснить, как добавлять целые числа из объекта сканера в массив. Предостережение заключается в том, что сканер должен прекратить принимать целочисленные значения, когда целое число меньше 0. Другими словами, независимо от длины введенного массива, он должен прекратить принимать целочисленные значения, как только сканер обнаружит отрицательное значение. В этом вопросе используется язык Java.
Оттуда он должен распечатать введенный массив.
Пример:
Когда ввод -
12 22 22 23 25 -1
, он должен немедленно остановить сканер на -1 и вывести следующий массив:
12 22 22 23 24-1
Что я пробовал
Поскольку массиву нельзя присвоить фиксированный размер для стандартного массива, я выбрал массив Список, который даст возможность добавлять столько значений из объекта сканера. Как только я понял этот шаг, я выполнил простую пользовательскую проверку для любых введенных целых чисел, которая выглядит следующим образом:
public static void main(String[] args) {
// Initiate scanner and a new array
Scanner scnr = new Scanner(System.in);
ArrayList<Integer> userValues = new ArrayList<Integer>();
System.out.print("Enter numbers: ");
// While the scanner reads an integer, add integers to the array list
while (scnr.hasNextInt()) {
userValues.add(scnr.nextInt());
}
// Print out the array list
System.out.println(userValues);
}
Входные и выходные данные для вершины будут такими. ВХОД
1 2 3 45 32 1 L
ВЫХОД
[1, 2, 3, 45, 32, 1]
Это работает только для базовой c проверки целых чисел и останавливает ввод строки или других типов данных в массив. Кажется, я не могу понять, как остановить объект сканера и сохранить весь массив. Следующий код - моя попытка решить проблему:
public static void main(String[] args) {
// Initiate scanner and new array
Scanner scnr = new Scanner(System.in);
ArrayList<Integer> userValues = new ArrayList<Integer>();
boolean isPositive = true;
System.out.print("Enter numbers: ");
// TODO: Once the user enters a value less than 0, break the loop
while(scnr.hasNextInt() && isPositive) {
if(scnr.nextInt() < 0) {
isPositive = false;
} else {
userValues.add(scnr.nextInt());
}
}
System.out.println(userValues);
}
При неудачных попытках это не работает и дает мне странные результаты, которые я не могу понять.
ВХОД
1 23 45 -1 -1
ВЫХОД
[23, -1 ]
Я ценю помощь.