1

Le problème que j'ai avec ce code est le suivant: le numéro de variable ne peut pas être une chaîne donc j'ai essayé d'utiliser une instruction try, catch (InputMissmatchException) pour résoudre le problème. Cependant, quand in entre dans la boucle et que quelqu'un entre dans une chaîne, l'exception est handle, mais elle parcourt la boucle en utilisant la dernière entrée valide. c'est-à-dire que j'entre 5 et que je tape "bonjour" le résultat est: "Vous devez entrer un nombre". mais maintenant 5 est compté à nouveau.Gestion des exceptions dans une boucle while

Cela rend le compteur en ajouter un de trop à la variable de comptage. Et si l'utilisateur continue d'utiliser une chaîne, la boucle continue d'ajouter la dernière entrée valide à plusieurs reprises, de sorte que le compte soit erroné à la fin.

Logiquement, je veux que le programme gère le problème et demande à l'utilisateur d'entrer une entrée correcte jusqu'à ce qu'un entier acceptable soit entré sans passer à nouveau par la boucle while; et lorsque l'utilisateur entre une entrée valide, continuer à boucler ou exister (-1).

int number = 0; 
int[] count = new int[11]; 

    try 
     { 
     number = input.nextInt(); 
     } 
     catch (InputMismatchException y) 
     { 
     System.out.println("You must enter a number."); 
     input.nextLine(); 

     }  


    while (number != -1) 
    { 
     try 
     { 
      ++count[number]; 
     } 
     catch (IndexOutOfBoundsException e) 
     { 
      System.out.println("Please enter a valid number from the menu."); 
     } 

     try 
     { 
     number = input.nextInt(); 
     } 
     catch (InputMismatchException y) 
     { 
     System.out.println("You must enter a number."); 
     input.nextLine(); 

     } 
    } 

Répondre

1

Sons comme vous voulez une boucle while jusqu'à ce qu'ils entrent dans un certain nombre

int number = 0; 
int[] count = new int[11]; 

while(true) { 
    try 
    { 
    number = input.nextInt(); 
    break; 
    } 
    catch (InputMismatchException y) 
    { 
    System.out.println("You must enter a number."); 
    input.nextLine(); 

    } 
} 


while (number != -1) 
{ 
    try 
    { 
     ++count[number]; 
    } 
    catch (IndexOutOfBoundsException e) 
    { 
     System.out.println("Please enter a valid number from the menu."); 
    } 

    while(true) { 
     try 
     { 
      number = input.nextInt(); 
      break; 
     } 
     catch (InputMismatchException y) 
     { 
      System.out.println("You must enter a number."); 
      input.nextLine(); 
     } 
    } 

}