从用户输入中获取答案并传递给另一个类

时间:2013-03-23 00:25:07

标签: java string class user-input

我正在尝试接受用户输入,然后将该输入传递给另一个类以执行一系列检查。在这种情况下,要将答案与用户可以键入的选项列表进行比较,如果他们键入选项,则将执行操作。我开始使用菜单选项但我在控制台中键入“菜单”,没有任何反应......程序只是终止而没有错误。

在调试中,在'return;'值'menu'存储在变量'answer'中。接下来的一步,我得到“Thread [main](Suspended)”和这个堆栈跟踪消息:

  

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;
    }
}

1 个答案:

答案 0 :(得分:2)

对于初学者,您需要从main实例化Exec实例,并将其传递给Exec ... 即:

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

从那里,它应该工作。它说没有更多可用的变量,因为你的程序以返回语句结束......

但是你的Exec类也有问题....没有分配newAnswer而你正在测试它是否相等......你会得到另一个错误......

编辑:

ugg ..它甚至比那更糟糕......不要重新声明答案,使用this.answer ...你宣布一个新的局部变量。