Java动态var分配给变量
我有一个鸡和鸡蛋的问题。我用于动态打字(python),所以如果这是一件基本的事情,请对我温柔。Java动态var分配给变量
我有一个扫描仪,但我想让用户输入一个字符串或一个整数(1或'option1')。因为它是用户输入,所以我不知道结果类型(int或string)。我需要从扫描器获取用户输入,将其分配给一个变量,然后将该变量传递给重载方法。
问题是我需要声明变量类型。但是,它可以是。我该如何处理?
编辑
为了澄清,我想这样做这样的事情(下面是伪代码):
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));
说我遇到的问题是“选择”的声明。我为这种类型放了什么?
您可以将其作为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);
}
重要的是要注意,但如果OP允许“option1”或“选项1”,您需要在尝试解析剩余的内容之前去掉所有不是数字的字符。 – Jacob
@Jacob是的,我认为stringValue是“1”,而不是“选项1”。如果它是“选项1”,则调用字符串版本 –
取输入值的字符串,将其转换使用
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
}
只是让它成为'String'并检查它是否只是数字或之后。如果它解析为'int'。 – SomeJavaGuy
我如何检查它的数字,如果我把它作为一个字符串?如果我把它作为一个字符串wouldnt它是一个字符串? – PyNoob
字符串'“1”'只包含数字,所以它可以被解析为一个int。字符串“”option1“'包含字母,因此您不能将其转换为字符串。 – puhlen