Java动态var分配给变量

时间:2016-09-21 13:54:05

标签: java java.util.scanner

我有鸡肉和鸡蛋的问题。我用它来动态打字(python)所以如果这是一个基本的东西,请对我温柔。

我有扫描仪,但我想允许用户输入字符串或整数(1或' option1')。因为它是用户输入,所以我不知道结果类型(int或字符串)。我需要从扫描程序获取用户输入,将其分配给变量,然后将该变量传递给重载方法。

问题是我需要声明变量类型。但是,它也可以。我该如何处理?

修改

为了澄清,我正在考虑做这样的事情(下面是伪代码):

public static float methodname(int choice){
//some logic here
}

public static float methodname(String choice){
//some logic here
}

Scanner input = new Scanner( System.in ); 

choice = input.nextLine();

System.out.println(methodname(choice));

我遇到的问题是“选择”的声明。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以将其作为String并尝试将其转换为int。如果转换没有问题,您可以使用int版本,否则请使用String版本。

String stringValue = ...

try {
    // try to convert stringValue to an int
    int intValue = Integer.parseInt(stringValue);
    // If conversion is possible you can call your method with the int
    call(intValue);
} catch (NumberFormatException e) {
    // If conversion can't happen call using the string
    call(stringValue);
}

答案 1 :(得分:1)

将输入值作为String,使用

将其转换为整数
String number = "1";
int result = Integer.parseInt(number);

如果它解析,那么你可以继续使用它作为数字。如果失败则会抛出NumberFormatException。所以你可以捕获异常并继续使用字符串。

try{ 
    String number = "option1";
    int result = Integer.parseInt(number);
    // proceed with int logic
} catch(NumberFormatException e){
    // handle error and proceed with string logic
}