检查一个字符串是否是一个有效的数字:ArrayIndexOutOfBoundsException异常
,我读了一本书,一个代码,它说的是,为了检查一个给定的字符串是否包含一个有效的数字,如果是这样,将其转换为二进制(内部)的形式,代码应该写成如下:检查一个字符串是否是一个有效的数字:ArrayIndexOutOfBoundsException异常
public class Exercise5
{
public static void main(String args[])
{
String aNumber = args[0];
double result;
try {
result = Double.parseDouble(aNumber);
System.out.println("Number is " + result);
} catch (NumberFormatException exc) {
System.out.println("Invalid number " + aNumber);
return;
}
}
}
但正如我复制的代码和编译它,它会导致具有java.lang.ArrayIndexOutOfBoundsException
。你认为这个问题可能是什么?
您正在访问的唯一阵列是形式参数。您正在访问该数组的第一个元素而不检查它是否为空。该数组包含传递给Java应用程序的命令行参数。
你应该访问前检查数组:
String aNumber = null;
if (args.length > 0)
aNumber = args[0];
你应该传递一个参数到您的程序。
谢谢。那么我应该在代码上添加什么? – MarshallLee 2014-11-03 13:02:27
它似乎做工精细,我只是编译并运行它,而运行你给作为命令行参数是多少? ,它工作得很好
来看,它从你的终端这样
java Exercise5 56
你
Number is 56.0
如果你不知道你给正在运行的程序,而被称为命令行参数的参数,例如,如果你说 的Java myprogname 5 6 7
在主你
args[0]=5,
args[1]=6 ...
那么当您运行java文件传递的期望数量为字符串。
前
java Exercise5 123
↑
args[0]
,但如果你运行而没有经过值,那么args[0] doesn't exist
因为在ARGS []数组。它的empty array
没有元素。所以你得到了error
java.lang.ArrayOutOfBoundException
java Exercise5
↑
args[0] //Exception
目标这个程序是检查字符串的数字或不..
所以如果你运行你的程序将字符串传递WH ICHü要查一个号码或没有,那么你将获取输出。如何使用该程序
java Exercise5 5
输出>>Number is 5.0
java Exercise5 a
输出>>Invalid number a
你应该通过aNumber的当你运行它时 – 2014-11-03 13:01:32
如果你不提供程序参数,'args [0]'的内容应该来自哪里? – Tom 2014-11-03 13:02:12