如何询问用户输入来调用方法

时间:2014-08-23 21:03:48

标签: java calculator

我想制作一个简单的计算器,这个计算器将计算平方米,计算一个计算器" pi"或任何你能想象到的东西。但我想在运行程序的开头调用,我想要使用的计算器。所以如果我运行程序,系统会问我是否要使用计算平方米或pi的计算器。例如输出:

  1. 您要使用的计算器: SquareMeter
  2. 输入第一个号码: 2
  3. 输入第二个数字: 4
  4. 您的回答是: 8
  5. 我的问题是,我该怎么做?

2 个答案:

答案 0 :(得分:1)

我能想到的两种方式,第一种是相当复杂但涉及各种潜在的用户输入,第二种方法是使用基本的编程概念,但它的功能有限。

使用this question中描述的任何方法。 (我是新的。如果提到这样的其他答案是违反规则的,请告诉我,请不要讨厌。)

示例代码:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class StackTester {
    public static void main(String[] args) {
        Method method = null;
        // set methodName equal to the name of the method to be called
        String methodName = "hi";
        StackTester cls = new StackTester();
        Class c = cls.getClass();
        try {
            method = c.getMethod(methodName, int.class);
            System.out.println("method = " + method.toString()); 
        } 
        catch (SecurityException e) {
            System.out.println("fail1");
        } 
        catch (NoSuchMethodException e) {
            System.out.println("fail2");
        }
        try {
              System.out.println(method.invoke(cls, 8)); 
            }
        catch (IllegalArgumentException e) {
            } 
        catch (IllegalAccessException e) {
            } 
        catch (InvocationTargetException e) {
    }
}
    public int hi(int x) {
        return x;
    }
}

另一种方法是使用大量的if / else或switch / case与Scanner读取用户输入来调用您想要调用的所有方法名称。

只是建议将来参考:自己尝试一些研究!我学到了很多,只是想回答这个问题。

答案 1 :(得分:0)

您可以使用Scanner

例如:

Scanner in = new Scanner(System.in);

System.out.println("which calculator you want to use?");

String calculatorType = in.nextLine();

System.out.println("enter first number: ");

String firstNumber = in.nextLine();

System.out.println("enter second number: ");

String secondNumber = in.nextLine();

if(calculatorType.equals("SquareMeter")
    //do something
    System.out.println("Your answer is: " + doSomeCalculation(firstNumber, secondNumber));

在if语句中,您可以根据用户要求的计算调用不同的方法。在这种情况下,"SquareMeter"将是doSomeCalculation(),因此int doSomeCalculation(int a, int b){ return a*b; } 看起来像这样:

{{1}}

希望这有帮助