2010-09-25 65 views
0

我试图用java.util.Scanner实现一个简单的yes/no输入。我的代码如下所示:java.util.Scanner和字符串问题

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); 
} 

简而言之:它以无限的答案请求结束。答案永远不会被理解,我不知道我做错了什么。

+1

也许它应该是'answ = answ.split(“”)[0] .toLowerCase();'? – st0le 2010-09-25 13:11:06

+0

不,第一个分割是空的。 – fb55 2010-09-25 13:18:53

回答

3

您不能使用==比较Java中的字符串(当然,您可以,但它不是比较它们的字面值的正确方法)。您需要使用equals()

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

Jup。如果要避免可能的空指针异常,请使用“y”.equals(answ)。 – InsertNickHere 2010-09-25 13:08:29

+1

@InsertNickHere:很好!编辑。 – BoltClock 2010-09-25 13:09:15

+0

完美。谢谢! – fb55 2010-09-25 13:20:21