2015-11-07 6 views
0

J'essaie d'amener l'utilisateur à entrer n'importe quel nombre entre 0 et 10 une quantité illimitée de fois jusqu'à ce qu'ils veulent arrêter. Ils arrêtent en entrant la valeur -1. Jusqu'à présent, j'ai été capable de créer ce qui se passe quand ils entrent une valeur correcte, mais quand ils saisissent -1 (qui est une valeur invalide dans la boucle while), le programme sait que c'est invalide. Tout ce que je cherche, c'est que le programme exclue -1 de l'entrée invalide possible, et que le programme arrête de demander plus d'entrées. Voici mon code à ce jour:Comment obtenir un nombre saisi par l'utilisateur pour quitter une boucle?

int userInput=0; 
    System.out.println("Please enter numbers ranging from 0 to 10 (all inclusive)."); 
    System.out.println("When you want to stop, type and enter -1."); 


    while (userInput <= 10 && userInput >= 0) 
    { 
     userInput=Integer.parseInt(br.readLine()); 

     while (userInput > 10|| userInput < 0) 
     { 
      System.out.println("That number is not in between 0 and 10. Please enter a correct number."); 
      userInput=Integer.parseInt(br.readLine()); 
     } 
     sum=sum+userInput; 
     freq++; 
    } 
    while (userInput == -1) 
    { 
     System.out.println("You have chosen to stop inputing numbers."); 
    } 

Désolé pour ma compréhension limitée:/

Répondre

0

Je suggère que vous essayez d'en faire trop avec des boucles while. Comme il est écrit, vous ne sortez jamais de votre premier. Si vous entrez un nombre entre 0 et 10, il revient et demande à nouveau. Si vous mettez autre chose que cela, vous frappez cette boucle while imbriquée et il finit par demander un numéro à nouveau. Pensez au flux et à ce que vous voulez qu'il fasse. Voici un aperçu rapide d'une façon d'y aller:

System.out.println("Please enter numbers ranging from 0 to 10 (all inclusive)."); 
System.out.println("When you want to stop, type and enter -1."); 
keepgoing = true; 
while(keepgoing) { 
    userInput=Integer.parseInt(br.readLine()); 
    if((userInput <= 10 && userInput >= 0) { 
     sum=sum+userInput; 
     freq++; 
    } 
    else if(userInput == -1) { 
     System.out.println("You have chosen to stop inputing numbers."); 
     keepgoing = false; 
    } 
    else { 
     System.out.println("That number is not in between 0 and 10. Please enter a correct number."); 
    } 
} 

Au moins, je pense qu'il y arrivera. Il existe différentes méthodes pour contrôler le flux de votre code. C'est bon de savoir quand utiliser lequel.