Tester les entrées négatives et non entières
Dans cette étape, nous allons tester notre programme SquareRootChecker.java
avec des nombres négatifs et examiner ce qui se passe si l'utilisateur entre quelque chose qui n'est pas un entier.
Dans le code que nous avons écrit, nous avons inclus une vérification pour les nombres négatifs :
if (number < 0) {
System.out.println("Cannot calculate the square root of a negative number.");
}
Cette instruction if
gère le cas où l'utilisateur entre un entier négatif. Testons cette partie du code.
-
Assurez-vous d'être dans le répertoire ~/project
dans le terminal.
-
Exécutez le programme compilé :
java SquareRootChecker
-
Lorsque vous êtes invité, entrez un nombre négatif, par exemple, -4
, puis appuyez sur Entrée.
Enter an integer: -4
Cannot calculate the square root of a negative number.
Comme prévu, le programme identifie correctement qu'il ne peut pas calculer la racine carrée d'un nombre négatif et affiche le message approprié.
Maintenant, examinons ce qui se passe si l'utilisateur entre une entrée qui n'est pas un entier, comme du texte ou un nombre décimal. Notre programme utilise scanner.nextInt()
pour lire l'entrée. Cette méthode est conçue pour lire uniquement des valeurs entières. Si l'utilisateur entre quelque chose qui ne peut pas être interprété comme un entier, une InputMismatchException
se produira et le programme plantera.
Gérer ces erreurs de manière élégante est une partie importante de l'écriture de programmes robustes. Pour ce laboratoire introductif, nous n'implémenterons pas une gestion complète des erreurs pour les entrées non entières, mais il est important de savoir que cela peut arriver. Dans les futurs laboratoires, vous apprendrez des techniques telles que les blocs try-catch
pour gérer les exceptions et rendre vos programmes plus résistants aux entrées inattendues de l'utilisateur.
Pour l'instant, observons simplement ce qui se passe lorsque vous entrez une entrée non entière.
-
Exécutez à nouveau le programme compilé :
java SquareRootChecker
-
Lorsque vous êtes invité, entrez du texte, par exemple, hello
, puis appuyez sur Entrée.
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)
Vous verrez un message d'erreur indiquant une InputMismatchException
. Cela est dû au fait que scanner.nextInt()
attendait un entier mais a reçu "hello".
Cette étape souligne l'importance de prendre en compte différents types d'entrées utilisateur et de savoir comment votre programme les gérera. Bien que notre programme actuel soit simple, comprendre ces problèmes potentiels est crucial pour le développement d'applications plus complexes.