Задать вопрос
@vixxxen

Как повторно читать из Консоли с помощью Scanner?

Есть код:
public static void inp(double[] mas) {
Scanner scanner = new Scanner(System.in);
//String input = scanner.useDelimiter("\\A").next();
double x,y,z;
System.out.print("Введите Координату x: ");
if (scanner.hasNextDouble()) {
x = scanner.nextDouble();
mas[0] = x;
} else {
System.out.println("Некорректный ввод");
return;
}
System.out.print("Введите Координату y: ");
if (scanner.hasNextDouble()) {
y = scanner.nextDouble();
mas[1] = y;
} else {
System.out.println("Некорректный ввод");
return;
}
System.out.print("Введите Координату z: ");
if (scanner.hasNextDouble()) {
z = scanner.nextDouble();
mas[2] = z;
} else {
System.out.println("Некорректный ввод");
return;
}
System.out.println("Создана точка с координатами ("+ x + ";" + y + ";" + z +")");
scanner.close();
}
Он корректно работает, когда я использую метод в первый раз. Когда вызываю его повторно, в консоль выводится "Некорректный ввод", хотя ничего вообще не вводилось. Правильно ли я понимаю, что это из-за того что scanner начинает читать с самого начала вывода в консоли? Как можно решить эту проблему?
  • Вопрос задан
  • 663 просмотра
Подписаться Простой Комментировать
Решения вопроса 1
@fapsi
Безработный
Недолгий поиск показал(раз и два), что scanner.close() закрывает и System.in, который повторно не открывается. Без scanner.close() всё работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽