繁体   English   中英

从用户输入中获取答案并传递到另一个班级

[英]Get answer from user input and pass to another class

我试图接受用户输入,然后将该输入传递给另一个类,以执行一系列检查。 在这种情况下,为了将答案与用户可以键入的选项列表进行比较,如果他们键入了选项,则将执行操作。 我从菜单选项开始,但是我在控制台中键入“ menu”,什么也没有发生……程序只是终止而没有错误。

在调试中,在“返回”处; 值“菜单”存储在变量“答案”中。 此后的下一步是“线程[main](已暂停)”和此堆栈跟踪消息:

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

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

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

从那里开始,它应该起作用。 它说没有更多可用的变量,因为您的程序在该return语句处结束...

但是您在Exec类中也遇到了问题。...未分配newAnswer,并且正在测试其是否相等...您将得到另一个错误...

编辑:

ugg ..它甚至比那更糟...不要重新声明答案,请使用this.answer ...您在声明新的局部变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM