Testar Entradas Negativas e Não Inteiras
Nesta etapa, testaremos nosso programa SquareRootChecker.java com números negativos e consideraremos o que acontece se o usuário inserir algo que não seja um inteiro.
No código que escrevemos, incluímos uma verificação para números negativos:
if (number < 0) {
System.out.println("Cannot calculate the square root of a negative number.");
}
Esta instrução if lida com o caso em que o usuário insere um inteiro negativo. Vamos testar esta parte do código.
-
Certifique-se de estar no diretório ~/project no Terminal.
-
Execute o programa compilado:
java SquareRootChecker
-
Quando solicitado, insira um número negativo, por exemplo, -4, e pressione Enter.
Enter an integer: -4
Cannot calculate the square root of a negative number.
Como esperado, o programa identifica corretamente que não pode calcular a raiz quadrada de um número negativo e imprime a mensagem apropriada.
Agora, vamos considerar o que acontece se o usuário inserir uma entrada que não seja um inteiro, como texto ou um número decimal. Nosso programa usa scanner.nextInt() para ler a entrada. Este método foi projetado para ler apenas valores inteiros. Se o usuário inserir algo que não pode ser analisado como um inteiro, uma InputMismatchException ocorrerá, e o programa travará.
Lidar com esses erros de forma adequada é uma parte importante da escrita de programas robustos. Para este laboratório introdutório, não implementaremos o tratamento completo de erros para entrada não inteira, mas é importante estar ciente de que isso pode acontecer. Em laboratórios futuros, você aprenderá técnicas como blocos try-catch para lidar com exceções e tornar seus programas mais resilientes a entradas inesperadas do usuário.
Por enquanto, vamos apenas observar o que acontece quando você insere uma entrada não inteira.
-
Execute o programa compilado novamente:
java SquareRootChecker
-
Quando solicitado, insira algum texto, por exemplo, hello, e pressione Enter.
Enter an integer: hello
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at SquareRootChecker.main(SquareRootChecker.java:9)
Você verá uma mensagem de erro indicando uma InputMismatchException. Isso ocorre porque scanner.nextInt() esperava um inteiro, mas recebeu "hello".
Esta etapa destaca a importância de considerar diferentes tipos de entrada do usuário e como seu programa irá lidar com eles. Embora nosso programa atual seja simples, entender esses problemas potenciais é crucial para desenvolver aplicações mais complexas.