2010-03-05 3 views
0

J'ai bouclé conçu pour valider l'entrée de l'utilisateur sur une question, il fonctionnait bien jusqu'à ce que j'ajoute ceci;instruction injoignable

ce
 if (userInput.charAt(0) > NUMCOLS && userInput.charAt(0) < 0); 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

avant cette

 if (userInput.charAt(2) !='-') 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

Maintenant, chaque fois que je tente de compiler je reçois une erreur indiquant que ceci est une déclaration inatteignable , est la cause?

Répondre

10

Il y a une fausse ';' dans la première ligne de votre code ajouté qui fait le premier continue; toujours exécuter!

3

Ces deux conditions ne peuvent pas être vraies en même temps, et le compilateur est conscient de cela.

Lire à haute voix:

Si les entrées utilisateur premier caractère est supérieur à numcols et son moins de 0! Si NUMCOLS est égal ou supérieur à 0, la seconde condition ne peut pas être vraie en même temps, et vice versa.

+0

OK - je me trompe à ce sujet étant la cause de votre erreur de compilation, mais votre logique ne semble mal . Comment ces deux conditions peuvent-elles être vraies en même temps? –

+0

En fait, c'est le prochain problème que j'ai rencontré, voici ce que je suis en train de tester; si (userInput.charAt (0) <0 && userInput.charAt (0)> (NUMCOLS + 1)) ce que j'essaie de faire est de créer un jeu de dames, je vérifie pour s'assurer que le Le nombre entré par le joueur est entre 1 et 8, NUMCOLS est une variable utilisée pour déterminer la taille du damier (dans ce cas 7, mais le tableau est dessiné 1-8 au lieu de 0-7, d'où l'addition 1 à NUMCOLS) Peu importe ce que j'entre, il renvoie toujours faux à la condition et ignore l'erreur ... – Troy

+0

Donc, ce que vous voulez est userInput.charAt (0)> = 1 && userInput.charAt (0) <9) –

3

votre test if a un corps vide!

donc le code ci-dessous est toujours exécuté et comme il y a un code continue les instructions suivantes ne sont jamais exécutées ..