while循环的输出不起作用

时间:2013-09-10 16:13:16

标签: java

今天两次发表有关此主题的道歉,这是一个不同的问题。所以我正在制作一个java问题,我正在创建一个模拟旧电视智力竞赛节目的节目,你打赌你的生活。游戏节目主持人Groucho Marx选择了一个秘密词,然后与参赛者聊了一会儿。如果任一参赛者在一个句子中使用该秘密词,他或她将赢得$ 100.00。

我的程序是为了检查这个秘密词。

这是我的代码:

        import java.util.Scanner; 

        public class Groucho{
          String secret; 

          Groucho(String secret){
            this.secret = secret; 
          }

          public boolean saysSecret(String line){
            if(secret.equals(line)){
              return(true);
            }
            else{
              return(false);
            }
          }

          public static void main(String[] args){
            Scanner in = new Scanner(System.in); 
            String line = in.nextLine();
            Groucho g = new Groucho(line);

            while (in.hasNextLine()) {
              String guess = in.nextLine();

              /*Not sure about these next two lines:
               *String answer = g.saysSecret(guess);
              */System.out.println(answer);

            }
      }  

}

当我跑的时候没有任何事情发生。我认为应该回归真假?我真正希望它做的是如果该行包含密码,它会打印一条消息,说“你赢了100美元”并告诉我这个秘密字是什么。有人能指出我正确的方向吗? 非常感谢 英里

2 个答案:

答案 0 :(得分:1)

正如Sotirios指出的那样,你应该使用saySecret(String)来检查猜测是否正确。 所以循环看起来像:

while (in.hasNextLine()) {
    String guess = in.nextLine();
    if (g.saysSecret(guess))
    {
        System.out.println("You got it! The word was: "+g.secret);
    } else {
        System.out.println("Aw, try again.");
    }
}

答案 1 :(得分:0)

您的代码不起作用,因为您要为String分配布尔值。您应该比较g.saysSecret(guess)的返回值,然后如果此值为true,则打印成功的消息(如果此值为false,则打印失败消息)。

另外,你说过:

  

我真正希望它做的是该行是否包含秘密词......

所以

secret.equals(line) 

不是你想要的,因为只有当整行等于秘密词时才会成立。要搜索一行中的单词,您可以使用:

line.contains(secret)

或者你可能需要一个更精细的方法来处理不区分大小写的匹配等等。