@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 начинает читать с самого начала вывода в консоли? Как можно решить эту проблему?
  • Вопрос задан
  • 558 просмотров
Решения вопроса 1
@fapsi
Безработный
Недолгий поиск показал(раз и два), что scanner.close() закрывает и System.in, который повторно не открывается. Без scanner.close() всё работает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы