我使用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 //执行
如果访问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实际收到的内容.
特别是,*在与命令行解析相关的许多情况下具有特殊含义.
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |