Java 检查字符串是否为有效数字:ArrayIndexOutOfBoundsException

Java 检查字符串是否为有效数字:ArrayIndexOutOfBoundsException,java,exception,exception-handling,Java,Exception,Exception Handling,我从一本书中读到一段代码,它说,为了检查给定字符串是否包含有效数字,如果是,则将其转换为二进制内部形式,代码应编写如下: public class Exercise5 { public static void main(String args[]) { String aNumber = args[0]; double result; try { result = Double.parseDouble(aN

我从一本书中读到一段代码,它说,为了检查给定字符串是否包含有效数字,如果是,则将其转换为二进制内部形式,代码应编写如下:

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。您认为问题可能是什么?

您正在访问的唯一数组是args。您正在访问该数组的第一个元素,而没有检查它是否为空。此数组包含传递给Java应用程序的命令行参数

在访问阵列之前,应先检查阵列:

    String aNumber = null;
    if (args.length > 0)
        aNumber = args[0];

你应该把一个参数传递给你的程序。

它似乎工作得很好,我刚刚编译并运行了它,在运行时,你把这个数字作为命令行参数了吗,它很好用

像这样从终端运行它

 java Exercise5 56
你得到

 Number is 56.0
如果您不知道在运行程序时给出的参数称为命令行参数,例如 java myprogname 5 6 7

大体上

args[0]=5,
args[1]=6 ...

在运行java文件时,应该以字符串形式传递所需的数字

但是如果运行时未传递值,则args[0]不存在,因为args[]数组中没有元素。它是空数组。因此出现错误java.lang.ArrayOutOfBoundException

该程序的目标是检查字符串是否为数字

因此,如果你运行你的程序传递一个字符串,你想检查一个数字或不那么你会得到输出。如何使用这个程序

java Exercise5 5
输出>>数字为5.0


输出>>无效数字a

运行时应传递一个数字如果不提供程序参数,参数[0]的内容应来自何处?
java Exercise5  
                ↑
              args[0]  //Exception
java Exercise5 5
java Exercise5 a