如何获取有关输入类型的信息?
main
中的String []数组只接受字符串。如果有人在args
中输入一个数字,我怎么能知道它是否是用字符串变量写的数字?
示例代码非常有用。 (对不起,如果我问的是愚蠢的问题)
答案 0 :(得分:3)
args[]
接受提供给main方法的所有参数,所以args[0]
虽然是一个String,但是如果你希望用户输入一个Integer,你可以使用它...
Integer.parseInt(args[0]);
考虑到这一事实虽然它可能通过java.lang.NumberFormatException
,但您必须检查以防用户输入无效输入。如果你想根据这是真正的数字做一些事情,那么看看Apache Commons Lang中的StringUtils.isNumeric,为什么要重新发明轮子?
我之所以这样做而不是try{} catch()
是因为异常应该用于特殊情况。
答案 1 :(得分:2)
您的参数的类型始终只是String
。如果该字符串是“”,则“Foo”或“182”此时完全是任意的。
这些字符串可能是或可能不是数字的有效表示。您需要将字符串转换为Integer.parseInt
的数字类型(例如int
)。
答案 2 :(得分:2)
您可以使用此代码。此代码将首先检查输入的输入是否为数字。如果它是数字,它将解析为num,否则它将为您提供默认值。
public static void main(String args[]) {
char chararr[] = args[0].toCharArray();
int num = 0 ;
boolean isNumber = false;
for (int i = 0; i < chararr.length;i++) {
if (Character.isDigit(chararr[i])) {
isNumber = true;
}
else {
isNumber = false;
break;
}
}
System.out.println("str is number "+isNumber);
if (isNumber) {
num = Integer.parseInt(args[0]);
}
System.out.println("number is "+num);
}
答案 3 :(得分:0)
最简单的方法是使用parseInt
进行检查。
public static void main(String[] args) throws InterruptedException
{
try
{
Integer.parseInt(args[0]);
}
catch(NumberFormatException e)
{
System.out.println("It is not a number.");
}
}
答案 4 :(得分:0)
你不能&#34;知道&#34;类型为String
的值。您可以尝试检查String
是否可以转换为其他类型。即使它可以,但并不意味着,String
值意味着属于那种类型。这是一个例子:
int value = Integer.parseInt("4711");
此声明会产生Integer
,其值为4711
,但这并不意味着,String
应该是一个经过编码的Integer
。