0

古いテレビのクイズ番組 You Bet Your Life をシミュレートするプログラムを作成している現在、Java の問題に取り組んでいます。ゲームショーの司会者である Groucho Marx が秘密の言葉を選び、出場者としばらくおしゃべりをします。いずれかの競技者が文の中で秘密の単語を使用した場合、その競技者は $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 に答える