Je dois vérifier si une valeur entrée par l'utilisateur n'est pas une valeur int. J'ai essayé différentes combinaisons de ce que je sais mais je ne reçois rien ou des erreurs aléatoires
Par exemple:
Si l'utilisateur entre "adfadf 1324", un message d'avertissement s’affiche.
Ce que j'ai:
// Initialize a Scanner to read input from the command line
Scanner sc = new Scanner(System.in);
int integer, smallest = 0, input;
boolean error = false;
System.out.print("Enter an integer between 1-100: ");
range = sc.nextInt();
if(!sc.hasNextInt()) {
error = true;
System.out.println("Invalid input!");
System.out.print("How many integers shall we compare? (Enter an integer between 1-100: ");
sc.next();
}
while(error) {
for(int ii = 1; ii <= integer; ii++) {
...
} // end for loop
}
System.out.println("The smallest number entered was: " + smallest);
}
}
Exécuter simplement une exception si l'entrée est invalide
Scanner sc=new Scanner(System.in);
try
{
System.out.println("Please input an integer");
//nextInt will throw InputMismatchException
//if the next token does not match the Integer
//regular expression, or is out of range
int usrInput=sc.nextInt();
}
catch(InputMismatchException exception)
{
//Print "This is not an integer"
//when user put other than integer
System.out.println("This is not an integer");
}
Try this one:
for (;;) {
if (!sc.hasNextInt()) {
System.out.println(" enter only integers!: ");
sc.next(); // discard
continue;
}
choose = sc.nextInt();
if (choose >= 0) {
System.out.print("no problem with input");
} else {
System.out.print("invalid inputs");
}
break;
}
vous avez des erreurs suivantes qui, à leur tour, vous causent cette exception, laissez-moi vous l'expliquer
c'est votre code existant:
if(!scan.hasNextInt()) {
System.out.println("Invalid input!");
System.out.print("Enter an integer: ");
usrInput= sc.nextInt();
}
dans le code ci-dessus, if(!scan.hasNextInt())
deviendra true
uniquement lorsque la saisie de l'utilisateur contient les deux caractères ainsi que des entiers tels que votre saisie adfd 123
.
mais vous essayez de lire uniquement les entiers à l'intérieur de la condition if en utilisant usrInput= sc.nextInt();
. Ce qui est incorrect, c'est ce que jette Exception in thread "main" Java.util.InputMismatchException
.
si bon code devrait être
if(!scan.hasNextInt()) {
System.out.println("Invalid input!");
System.out.print("Enter an integer: ");
sc.next();
continue;
}
dans le code ci-dessus, sc.next()
aidera à lire la nouvelle entrée de l'utilisateur et continue
aidera à exécuter de nouveau la même chose si (i.e if(!scan.hasNextInt())
).
S'il vous plaît utilisez le code dans ma première réponse pour construire votre logique complète. Indiquez-moi si vous avez besoin d'explications à ce sujet.
essayez ce code [updated] :
Scanner scan = null;
int range, smallest = 0, input;
for(;;){
boolean error=false;
scan = new Scanner(System.in);
System.out.print("Enter an integer between 1-100: ");
if(!scan.hasNextInt()) {
System.out.println("Invalid input!");
continue;
}
range = scan.nextInt();
if(range < 1) {
System.out.println("Invalid input!");
error=true;
}
if(error)
{
//do nothing
}
else
{
break;
}
}
for(int ii = 1; ii <= range; ii++) {
scan = new Scanner(System.in);
System.out.print("Enter value " + ii + ": ");
if(!scan.hasNextInt()) {
System.out.println("Invalid input!");
ii--;
continue;
}
}
Cela consiste à continuer à demander des entrées pendant que cette entrée est un entier et à trouver si elle est impaire ou même sinon elle se terminera.
int counter = 1;
System.out.println("Enter a number:");
Scanner OddInput = new Scanner(System.in);
while(OddInput.hasNextInt()){
int Num = OddInput.nextInt();
if (Num %2==0){
System.out.println("Number " + Num + " is Even");
System.out.println("Enter a number:");
}
else {
System.out.println("Number " + Num + " is Odd");
System.out.println("Enter a number:");
}
}
System.out.println("Program Ended");
}
int function(){
Scanner input = new Scanner(System.in);
System.out.print("Enter an integer between 1-100: ");
int range;
while(true){
if(input.hasNextInt()){
range = input.nextInt();
if(0<=range && range <= 100)
break;
else
continue;
}
input.nextLine(); //Comsume the garbage value
System.out.println("Enter an integer between 1-100:");
}
return range;
}
Tiré d'un post lié :
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
}
// only got here if we didn't return false
return true;
}