J'essaie de faire en sorte que mon code affiche un message d'erreur chaque fois que l'utilisateur entre un nombre décimal / un nombre négatif et continuera à faire une boucle jusqu'à ce qu'un nombre positif supérieur à 0 soit implémenté.
Voici ce que j'ai jusqu'à présent;
public static void numberFunctions() { System.out.println("Calculating a Factorial"); Scanner myScan= new Scanner (System.in); System.out.println("Please enter the number you'd like to use: "); int number = myScan.nextInt(); System.out.println(number); if(number>0) { int factorial = 1; int count; for (count = number; count >=1; count --) { factorial = factorial * count; System.out.print(count +" * "); } System.out.println(" = " + factorial); } else { System.out.println("ERROR! Please enter a positive number"); } }
3 Réponses :
Tout d'abord, vous pouvez créer une méthode par exemple
public static int getInteger() { }
Dans cette méthode, vous pouvez demander à l'utilisateur de saisir un entier en utilisant un bloc try catch
dans un boucle while
de cette façon, s'ils entrent un double
ou une String
, il attrapera l'exception et demandera à l'utilisateur d'essayer de saisir à nouveau un entier.
Une fois que vous avez compris cela, vous pouvez appeler cette méthode et vérifier si le nombre renvoyé est supérieur à 0.
Une fois que vous avez créé cette méthode, vous pouvez toujours l'utiliser pour demander des entiers à partir de l'utilisateur.
Ajoutez un bloc try / catch
lors de la prise d'entrée.
try { int number = myScan.nextInt(); } catch(InputMismatchException e) { System.out.println("Enter integer numbers only"); System.out.println(scanner.next() + " was not valid input."); }
OP
a demandé si l'utilisateur saisit un nombre décimal / négatif
. Comment votre solution va-t-elle vous aider?
l'ajout d'un try catch n'arrêtera pas l'exécution du code et passera à l'itération suivante. Où il demandera un nombre entier.
vérifiez ici: stackoverflow.com/questions/58926596/...
Vous êtes d'accord avec la partie de vérification des nombres négatifs. Cependant, si l'utilisateur entre une chaîne non valide ou un nombre réel, cette ligne de code lèvera une exception, nous devons donc intercepter cette erreur: int number = myScan.nextInt ();
C'est également une bonne pratique de toujours fermer votre scanner après l'avoir utilisé afin que nous le mettions dans la partie finale.
Voici ma suggestion de code pour vous:
public static void numberFunctions() { System.out.println("Calculating a Factorial"); Scanner myScan= new Scanner (System.in); System.out.println("Please enter the number you'd like to use: "); try { int number = myScan.nextInt(); if(number>0) { int factorial = 1; int count; for (count = number; count >=1; count --) { factorial = factorial * count; System.out.print(count); if (count != 1) { System.out.print(" * "); } } System.out.println(" = " + factorial); }else { System.out.println("ERROR! Please enter a positive number"); } }catch(InputMismatchException ex) { System.out.println("ERROR! Please enter a positive number"); }finally { myScan.close(); } }
commencez ici stackoverflow.com/questions/58926596/...