Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分配给变量的Java动态变量_Java_Java.util.scanner - Fatal编程技术网

分配给变量的Java动态变量

分配给变量的Java动态变量,java,java.util.scanner,Java,Java.util.scanner,我有一些鸡和蛋的问题。我习惯于动态类型(python),所以如果这是一件基本的事情,请对我温和一些 我有一个扫描仪,但我想允许用户输入字符串或整数(1或“option1”)。因为它是用户输入,所以我不知道结果类型(int或string)。我需要从扫描仪获取用户输入,将其分配给变量,然后将该变量传递给重载方法 问题是我需要声明变量类型。但是,两者都可以。我该怎么处理 编辑 为了澄清,我正在考虑这样做(下面是伪代码): 我面临的问题是“选择”的声明。我应该为类型输入什么?您可以将其作为字符串并尝试将

我有一些鸡和蛋的问题。我习惯于动态类型(python),所以如果这是一件基本的事情,请对我温和一些

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

问题是我需要声明变量类型。但是,两者都可以。我该怎么处理

编辑

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


我面临的问题是“选择”的声明。我应该为类型输入什么?

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

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

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

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

将输入值作为字符串,使用

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

只需将其设置为
字符串
,然后检查它是否仅为数字。如果是,则将其解析为
int
。如果将其设置为字符串,如何检查其是否为数字?如果我把它变成字符串,它不是字符串吗?字符串
“1”
只包含数字,因此可以将其解析为int。字符串
“option1”
包含字母,因此您无法将其转换为字符串。只需将其变成
字符串
,然后检查它是否只是数字。如果是,则将其解析为
int
。如果将其设置为字符串,如何检查其是否为数字?如果我将其设置为字符串,它不是字符串吗?字符串
“1”
只包含数字,因此可以将其解析为int。字符串
“option1”
包含字母,因此无法将其转换为字符串。需要注意的是,如果OP允许“option1”或“option1”,在解析剩余的字符之前,您需要去掉所有不是数字的字符。@Jacob是的,我假设stringValue是“1”,而不是“选项1”。如果是“option 1”,字符串版本是InvokeImportant要注意的,但是如果OP允许“option 1”或“option 1”,则在尝试解析剩余字符之前,您需要去掉所有不是数字的字符。@Jacob是的,我假设stringValue是“1”,而不是“option 1”。如果是“选项1”,则调用字符串版本