0

很抱歉今天两次发布有关此主题的帖子,这是一个不同的问题。所以我现在正在研究一个java问题,我正在创建一个模拟旧电视问答节目的程序,You Bet Your Life。游戏节目主持人格劳乔·马克思选择了一个秘密词,然后与参赛者聊了一会儿。如果任一参赛者在一个句子中使用了这个秘密词,他或她将赢得 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 美元”并告诉秘密词是什么。谁能指出我正确的方向?非常感谢迈尔斯

4

2 回答 2

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.");
    }
}
于 2013-09-10T16:20:34.353 回答
0

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

另外,你说过:

我实际上希望它做的是如果该行包含秘密词......

所以

secret.equals(line) 

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

line.contains(secret)

或者您可能需要一种更详细的方法来进行不区分大小写的匹配等。

于 2013-09-10T16:38:22.443 回答