1

一連のチェックを実行するために、ユーザー入力を受け入れ、その入力を別のクラスに渡そうとしています。この場合、回答をユーザーが入力できるオプションのリストと比較し、ユーザーがオプションを入力すると、アクションが実行されます。メニューオプションから始めていますが、コンソールに「menu」と入力しても何も起こりません...プログラムはエラーなしで終了します。

デバッグでは、「return;」で 値「menu」は変数「answer」に格納されます。その次のステップで、「スレッド[メイン](中断)」と次のスタックトレースメッセージが表示されます。

Thread.exit()行:使用不可[ローカル変数は使用不可]

main()からExecクラスで認識される回答を取得するにはどうすればよいですか?

これが私のmain()

package program2;
public class Calculator {
    public static String answer;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the word menu: ");
        String answer = sc.nextLine();
        return;
    }
}

これが、アクションを実行しようとしている私のExecクラスです。

package program2;

public class Exec {
    String newAnswer = Calculator.answer;

    public Exec (String answer){        
        if (newAnswer.equals("menu")){
            menu();
        }   
    } 
    public static void menu(){
        System.out.printf("%-30s %-30s %-30s%n", "Enter value: enter", "Duplicate: dup" "Exp:exp");        
    }
}  

私もこのようなもっと簡単なことを試しました(同じ応答を受け取りました):

package program2;
public class Calculator {
    public static String answer;

    public static void main(String[] args) {
        answer = "menu";
        return;
    }
}
4

1 に答える 1

2

手始めに、mainからExecのインスタンスをインスタンス化し、Execに渡す必要があります...すなわち:

String answer = sc.nextLine();
Exec ex = new Exec(answer);
return;

そこから、それは動作するはずです。プログラムはそのreturnステートメントで終了するため、使用可能な変数はこれ以上ないと言われています...

ただし、Execクラスにも問題があります。newAnswerが割り当てられておらず、同等性をテストしています...別のエラーが発生します...

編集:

ugg..それよりもさらに悪いです...答えを再宣言しないでください、使用this.answerしてください...あなたは新しいローカル変数を宣言しています。

于 2013-03-23T00:38:17.900 に答える