Когда пользователь нажимает клавишу "ввод" или ввод пробела, появляется сообщение об ошибке

Я хотел бы напечатать сообщение об ошибке, когда пользователь нажимает клавишу ввода или пробел ввод вместо строки. Я пробовал isEquals("") и isEmpty(), но пока не нашел ничего, что работает.

Вот мой код:

import java.util.Scanner;

public class check{
    public static void main(String args[]){
      System.out.println("Enter a number: ");
      Scanner keyboard = new Scanner(System.in);
      String input = keyboard.next();

      if(input.equals("")){
        System.out.println("Empty");
      } else {
        System.out.println("number inputed");
    }
  }

}

5 ответов

Один из способов сделать это, изменить keyboard.next() в keyboard.nextLine()использовать trim() чтобы удалить ненужные пробелы, проверьте с isEmpty(),

String input = keyboard.nextLine().trim();
if (input.isEmpty()) {
    // error message
} else {
    // good to go
}

Я сделал пример программы, похожей на вашу, и использовал nextLine() вместо next(). Когда пользователь вводит пробел и нажимает ввод, он печатает "пробел", иначе "число".

import java.util.Scanner;

public class check{
    public static void main(String args[]){
      System.out.println("Enter a number: ");
      Scanner keyboard = new Scanner(System.in);
      String input = keyboard.nextLine();


      if(input.trim().equals("")){
        System.out.println("Empty");
      } else {
        System.out.println("number inputed");
    }
  }
}

Чтобы проверить, является ли ввод строки пустым, вы можете использовать String.isEmpty() метод. Смотри ниже:

String input = keyboard.nextLine();
if(!input.isEmpty()) {
  //the input is not empty! 
} 
else {
  //the input is empty! 
} 

Обратите внимание, что, поскольку вы хотите получать числа в качестве входных данных, вы не должны извлекать их в виде строк. Ниже приведен пример, где программа извлекает double от пользователя. Scanner предоставляет много методов для проверки ввода пользователя. В этом случае я использую hasNextDouble() чтобы проверить, является ли ввод число.

Scanner scanner = new Scanner(System.in); 
System.out.println("Enter a number:");

while(!scanner.hasNextDouble()) {
  System.out.println("That's not a number!");
  scanner.next();
} 

double numberInput = scanner.nextDouble();
System.out.println("The entered number was " + numberInput);

Странно, я не получаю ошибку при запуске вашего кода. Тем не менее, я заметил, что ваш код просто не реагирует на пустой ввод (просто нажав Enter). Если вы хотите проверить это, вы можете использовать keyboard.nextLine().

Судя по остальной части вашего кода, кажется, что вы хотите, чтобы пользователь вводил только число. Простой способ проверить, ввел ли пользователь целое число, если вы используете сканер, - клавиатура.hasNextInt().

Это означает, что вы можете сделать что-то вроде этого:

if(keyboard.hasNextInt()) {
  int yourNumber = keyboard.nextInt();
  System.out.println("Your number is: " + your Number);
}
else {
  System.out.println("Please enter a valid integer");
}
Другие вопросы по тегам