Java:-lors de la boucle avec l'instruction switch

Langage: Java

boolean x = false;
String letter = "NULL";

do{
    System.out.print("Enter grade (one character): ");
    letter = sc.next(); 
    switch (letter) {
       case "a": 
       x=true;
       break;
     case "A":
       x=true;
       break;      
     case "b":
       x=true;
       break;      
     case "B":
       x=true;
       break;      
     case "c":
       x=true;
       break;      
     case "C":
       x=true;
       break;      
     case "d":
       x=true;
       break;      
     case "D":
       x=true;
       break;
     case "f":
       x=true;
       break;      
     case "F":
       x=true;
       break;
     default:
       System.out.println("Invalid grade - must enter A,B,C,D,F (upper or lower case)");
       System.out.println(x);
       break;
     }
      System.out.println(x);
     }
      while(x=false);

--------------résultat de sortie-----------------------------------résultat de sortie--------------------------

Depuis que je suis nouveau, j'ai besoin d'un 10 à la réputation de poster des photos de la sortie...voici donc la sortie en tapant...

//c'est pour si je entrez la Chaîne "e"

Entrent en première année (un caractère): e
Invalide de catégorie - devez saisir A,B,C,D,F (majuscule ou minuscule)

faux

faux

//c'est pour si je entrez la Chaîne "A"

Entrent en première année (un caractère): Un

Invalide grade devez saisir A,B,C,D,F (majuscule ou minuscule)

vrai

La question***:Pour ma sortie,quand j'entre "e", je m'attendais à voir quelque chose comme

Entrent en première année (un caractère): e

Invalide grade devez saisir A,B,C,D,F (majuscule ou minuscule)

faux

faux

//boucle à travers

Entrent en première année (un caractère):

Alors j'espérais que lorsque je suis entré "e" il serait faux...puis reprendre au début jusqu'à ce qu'un résultat est finalement entré qui est: A,B,C,D,F (majuscule ou minuscule)

Quelle est mon erreur? J'ai essayé de réfléchir moi-même, mais j'ai pensé que je voudrais voir ce que vous les gars ont à dire....

Si vous pensez que la stratégie que j'utilise pour obtenir le résultat n'est pas le meilleur....Quelle stratégie/logique recommanderiez-vous?

Merci pour l'aide!

Très facile, dans votre déclaration, faire x == false;
Vous pourriez faire while(!x). Vous remarquerez que votre erreur si vous essayez d'inverser cette comparaison while(false = x)
Merci!!

OriginalL'auteur ccaulfield | 2014-10-23