Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个代码有什么问题?为什么会出现这个错误?如何删除此项?_Java_Jakarta Ee - Fatal编程技术网

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

Java 这个代码有什么问题?为什么会出现这个错误?如何删除此项?,java,jakarta-ee,Java,Jakarta Ee,我使用Java实现了这段代码。它给了我一个错误,说java.lang.ArrayIndexOutOfBoundsException 我不知道为什么?此外,我还更改了我声明的整数int op=0;翻倍,不换钱。该程序适用于+、/和-。但不适用于*。为什么会这样? 代码如下: class test { public static void main(String [] mySpace) { double op=0; if (mySpace[0].equals(

我使用Java实现了这段代码。它给了我一个错误,说java.lang.ArrayIndexOutOfBoundsException 我不知道为什么?此外,我还更改了我声明的整数int op=0;翻倍,不换钱。该程序适用于+、/和-。但不适用于*。为什么会这样? 代码如下:

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);
    }
}
编辑:我在命令提示符下使用了以下命令:

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

用于执行的java测试*10 20//

如果访问mySpace[0],数组必须至少有一个元素;否则您将获得ArrayIndexOutOfBoundsException。mySpace也是如此[1]

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

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

System.out.println(Arrays.toString(mySpace));
诊断Java实际收到了什么

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

如果访问mySpace[0],数组必须至少有一个元素;否则您将获得ArrayIndexOutOfBoundsException。mySpace也是如此[1]

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

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

System.out.println(Arrays.toString(mySpace));
诊断Java实际收到了什么

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

您需要传递命令行参数。然后你就可以接近他们了。您访问时未传递任何命令行参数。那么mySpace.length将为0

但是您使用的mySpace[0]不存在任何元素

您需要传递命令行参数。然后你就可以接近他们了。您访问时未传递任何命令行参数。那么mySpace.length将为0


但是您使用的mySpace[0]不存在任何元素

您没有向应用程序传递任何内容,因此mySpace数组的大小为0。试用

java test 123

您没有向应用程序传递任何内容,因此mySpace数组的大小为0。试用

java test 123
编辑

这是因为*是一个shell通配符:它对shell有特殊的意义,shell在将其传递给命令(在本例中为java)之前会对其进行扩展

因为需要一个文本*,所以需要从shell中转义它。具体的逃逸方式因外壳而异,但您可以尝试:

java test "*" 10 20
请参阅此代码

public class Test {

    public static void main(String args[]) {


        if(args[0].equals("*"))
        {
                   System.out.println("true");
                  }
                 else
                  System.out.println("false");

        }
}

现在当我发出命令的时候

java Test.java * , it will print false
java Test.java "*"  // it will print true
但是当我发出命令的时候

java Test.java * , it will print false
java Test.java "*"  // it will print true
编辑

这是因为*是一个shell通配符:它对shell有特殊的意义,shell在将其传递给命令(在本例中为java)之前会对其进行扩展

因为需要一个文本*,所以需要从shell中转义它。具体的逃逸方式因外壳而异,但您可以尝试:

java test "*" 10 20
请参阅此代码

public class Test {

    public static void main(String args[]) {


        if(args[0].equals("*"))
        {
                   System.out.println("true");
                  }
                 else
                  System.out.println("false");

        }
}

现在当我发出命令的时候

java Test.java * , it will print false
java Test.java "*"  // it will print true
但是当我发出命令的时候

java Test.java * , it will print false
java Test.java "*"  // it will print true

mySpace字符串数组应该是运行应用程序时给出的参数列表。可能调用程序时根本没有参数。您应该检查mySpace conatin中的参数是否有任何值。不要从IDE执行,执行manuallu by:>>java classNameparameter@Ozil现在检查我的answerWell mySpace字符串数组应该是运行应用程序时给出的参数列表。可能调用程序时根本没有参数。您应该检查mySpace conatin中的参数是否有任何值。不要从IDE执行,执行manuallu by:>>java classNameparameter@Ozil现在检查我的回答我传递了三个参数,分别对应于mySpace[0]、mySpace[1]、mySpace[2]。该程序适用于+、/和-。但不适用于*。为什么会这样?@Ozil这是因为*是Windows命令提示符中的通配符。我传递了三个参数,分别对应于mySpace[0]、mySpace[1]、mySpace[2]。该程序适用于+、/和-。但不适用于*。为什么会这样?@Ozil这是因为*是windows命令提示符中的通配符