2010-09-25 9 views
0

J'ai essayé d'implémenter une simple entrée oui/non avec java.util.Scanner. Mon code ressemble à ceci:Problème avec java.util.Scanner & string

public boolean ask(String quest){ 
    String answ = scann(quest + " (y/n)"); 
    answ = answ.split("")[1].toLowerCase(); 
    if(answ == "y") { return true; } 
    if(answ == "n") { return false;} 

    //if answer isnt understood 
    printOut("Please enter 'y' or 'n'! Answered: " + answ +"!"); 
    return ask(quest); 
} 

Pour faire court: Il finit avec une demande infinie pour la réponse. La réponse n'est jamais comprise, je n'ai aucune idée de ce que j'ai fait de mal.

+1

il faudrait peut-être 'rép = answ.split ("") [0] .tolowercase();' ?? – st0le

+0

Non, le premier split est vide. – fb55

Répondre

3

Vous ne pouvez pas utiliser == pour comparer des chaînes dans Java (bien, vous pouvez, mais ce n'est pas la bonne façon de comparer leurs valeurs littérales). Vous devez utiliser equals():

if ("y".equals(answ)) { return true; } 
    if ("n".equals(answ)) { return false; } 
+1

Jup. Utilisez "y" .equals (answ) si vous voulez éviter les éventuelles exceptions de pointeur nulles. – InsertNickHere

+1

@InsertNickHere: bonne prise! Édité. – BoltClock

+0

Parfait. Je vous remercie! – fb55