Пользователь с клавиатуры вводит некую информацию, если она не соответствует заранее заданным критериям, то выводится сообщение об ошибке. При вводе из буфера обмена нескольких несоответствующих строчек программа каждую строку считывает отдельно, и выводит столько сообщений с ошибками, сколько строк было введено. То есть пользователь из буфера обмена вставляет несколько строчек, и каждая успевает восприняться как отдельный ввод, в результате чего выводится куча ошибок. Как заставить программу в таком случае выводить лишь одно сообщение с ошибкой?
public static int Input(int min, int max, int h) {
Scanner in = new Scanner(System.in);
int a = -1; // Введённое число.
String str = "";
do {
Output(h, max);
str = in.nextLine();
str = str.replaceAll("\\s+", "");
if (str.isEmpty()) {
System.out.println("Вы ничего не ввели!\n");
}
else {
try {
a = Integer.parseInt(str);
if (a < min || a > max) {
throw new NumberFormatException();
}
} catch (NumberFormatException e) {
a = -1;
System.out.println("Введённые данные неверны! Попробуйте снова.\n");
}
}
} while (a == -1);
return a;
}
Можно ввести дополнительную переменную, в которой хранить состояние - уже выводили этот текст или еще нет:
Scanner in = new Scanner(System.in);
int a = -1; // Введённое число.
String str = "";
boolean errorShown = false; // здесь храним показывалось ли сообщение
...
catch (NumberFormatException e) {
a = -1;
if (!errorShown) { // сообщение об ошибке еще не было показано
System.out.println("Введённые данные неверны! Попробуйте снова.\n");
errorShown = true;
}
}
Если же нужно совсем остановить цикл, то просто break после первого вывода сообщения:
catch (NumberFormatException e) {
a = -1;
System.out.println("Введённые данные неверны. До свидания!");
break;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В список с клавиатуры пишу стринги, на экран нужно вывести индекс первой стринги которая меньше предыдущей, пример:
Всем приветПереписываю некоторые методы с android приложения для реализации их чисто на java