0

我正在处理一个 java 问题,我正在创建一个模拟旧电视问答节目 You Bet Your Life 的程序。游戏节目主持人格劳乔·马克思选择了一个秘密词,然后与参赛者聊了一会儿。如果任一参赛者在一个句子中使用了这个秘密词,他或她将赢得 100.00 美元。

我的程序旨在检查这个秘密词。

这是我的代码:

import java.util.Scanner; 

    public class Groucho{
      String secret; 

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

      public String saysSecret(String line){
        if(secret.equals(line)){
         return("You have won $100! The secret word is: " + secret);
        }
        else{
          return("false");
        }
      }

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

      while (in.hasNextLine()) {
          Scanner input = new Scanner(System.in);
          String guess = input.nextLine();
          saysSecret(guess);

        }
      }  
    }

我认为他应该可以工作,但是当我运行它时,我得到:

java.lang.NullPointerException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

有人可以解释我做错了什么吗?非常感谢!英里

4

2 回答 2

6

static关键字添加到main方法中,以便应用程序具有有效的入口点

作为saySecret一个实例方法,它需要被调用,替换

saysSecret(guess);

g.saysSecret(guess);
于 2013-09-10T15:10:04.070 回答
2

您可能还想将while循环更改为以下内容:

while (in.hasNextLine()) {
    String guess = in.nextLine();
    String answer = g.saysSecret(guess);
    System.out.println(answer);
}

无需Scanner每次都创建一个新的。此外,您必须调用saysSecret实例g,因为它不是静态的。最后,该saysSecret方法只返回一个答案,但您仍然需要打印它。

但是,这仍然会永远循环,等待用户输入。最好修改您的saysSecret方法以返回一个布尔值并在此布尔值为真时退出循环,即猜测是正确的。

于 2013-09-10T15:21:38.640 回答