这段代码有什么问题?为什么会出现此错误?如何删除?

Ozi*_*zil 1 java java-ee

我使用Java实现了这个代码.它给了我一个错误说" java.lang.ArrayIndexOutOfBoundsException"我不知道为什么?另外,我将我声明的整数(int op = 0;)更改为double而没有更改.该程序适用于+,/和 - .但不是*.为什么会这样?这是代码:

class test {
    public static void main(String [] mySpace) {
        double op=0;
        if (mySpace[0].equals("*")) {
             op=Integer.parseInt(mySpace[1])*Integer.parseInt(mySpace[2]);
        }
        System.out.println("Heya! "+ op);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我在命令提示符中使用了这些命令:

javac test.java //用于编译名为test.java的源文件

java test*10 20 //执行

Mar*_*nik 5

如果访问mySpace[0],则数组必须至少包含一个元素; 否则你会得到ArrayIndexOutOfBoundsException.同样的mySpace[1].

因此mySpace.length,在尝试访问其任何成员之前,请使用它来检查数组的实际长度.法律指数范围从0到mySpace.length-1; 但你可能知道.

如果您的问题不是关于异常本身,而是关于为什么Java没有收到您认为传递给它的命令行参数,那么作为第一步使用

System.out.println(Arrays.toString(mySpace));
Run Code Online (Sandbox Code Playgroud)

诊断Java实际收到的内容.

特别是,*在与命令行解析相关的许多情况下具有特殊含义.