fazer enquanto questão loop e entrada do usuário

Shumsky:

Eu estou tentando fazer um programa onde um usuário precisa introduzir um número inteiro aleatório. Se o usuário insere uma String eu quero uma mensagem de erro pop fora: "Este não é um número" e depois reiniciar o programa até o usuário insere um número. Eu tenho esse até agora e eu estou preso. Acabei de receber uma mensagem de erro se a entrada I uma corda e programa trava.

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int number = 0;


    do {
        System.out.println("Input a number!");
        number = scanner.nextInt();
        if (!scanner.hasNextInt()) {
            System.err.println("This is not a number");
        }

    } while (!scanner.hasNextInt());

    System.out.println("You entered: " + number);

}
Sankeeth Ganeswaran:

Você está recebendo um InputMisMatchException porque se você amarrar uma entrada em um scanner.nextInt(), ele vai imediatamente dar um erro e parar o programa antes que ele faz qualquer outra coisa, por isso não vai chegar ao seu if. Uma maneira de contornar este problema é em vez receber entrada do usuário como uma string, trypara analisá-lo para um int, e terminar o ciclo se não lançar uma exceção. Esta é a minha aplicação:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String input = "";
    int number = 0;
    boolean end = true;


    do {
        System.out.println("Input a number!");
        input = scanner.nextLine();
        try {
            number = Integer.parseInt(input);
            end = true;
        } catch(Exception e) {
            System.err.println("This is not a number");
            end = false;
        } 

    } while (!end);

    System.out.println("You entered: " + number);

}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=365432&siteId=1
Recomendado
Clasificación