Есть ли способ использовать java Scanner.next() без получения ошибки буфера или новой строки?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ использовать java Scanner.next() без получения ошибки буфера или новой строки?

Сообщение Anonymous »

Эта функция есть в моем домашнем задании для занятий в колледже Java:

Код: Выделить всё

private static void addPetrol(Vehicle v){
Scanner scanner = new Scanner(System.in);
System.out.print("How many gallons of Petrol would you like to add: ");
while (true) {

String input = scanner.next();
System.out.println();
try {
float gallons = Float.parseFloat(input);
v.addPetrol(gallons);
System.out.println("Adding " + gallons + " gallons of fuel to the tank");
break;
}
catch (VechicleFuelException e) {
System.out.println(e.getMessage() + " Try again: ");
}
catch(Exception e){
System.out.println("Input " + input + " is not a valid amount, try again: ");
}
// Consume the leftover newline if there is any
if (scanner.hasNextLine()) {
scanner.nextLine();
}
}
}
Я столкнулся с этой ошибкой, когда у вас есть входной буфер, и когда вы нажимаете enter, следующая функция не захватывает созданный символ новой строки, поэтому в моем случае, если цикл переходит ко второму взаимодействию, символ новой строки будет подхвачен следующей функцией, что приведет к ошибке. Однако этого легко избежать, используя функцию Scanner.nextLine() для последующей очистки буфера, но проблема в том, что вводится новая строка, и это нарушает внешний вид приложения командной строки.

Подробнее здесь: https://stackoverflow.com/questions/793 ... g-error-or
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»