Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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_Arrays - Fatal编程技术网

Java打印空数组错误

Java打印空数组错误,java,arrays,Java,Arrays,这是我非常简单的代码,数据是一个空的双数组 private void findLast(){ double empty[] = new double[0]; if(data == empty){ throw new ArrayIndexOutOfBoundsException(" Array is empty"); }else{ System.out.println(data[data.length-1]); } } 当我运行代码

这是我非常简单的代码,数据是一个空的双数组

private void findLast(){
    double empty[] = new double[0];
    if(data == empty){
        throw new ArrayIndexOutOfBoundsException(" Array is empty");
    }else{
        System.out.println(data[data.length-1]);
    }
}
当我运行代码时,我在线程“main”java.lang.ArrayIndexOutOfBoundsException:-1中得到
异常


我的问题是,“抛出”和“如果”不应该阻止“其他”的运行吗?如何修复代码,使其正常运行

==
测试数组等引用类型的引用相等性

  • empty==empty
    true
  • empty==newdouble[0]
    false
如果需要查找数组是否为空,请使用:

if (data.length == 0) {

在java中,==运算符检查两个变量是否引用同一个对象,而不是检查变量引用的两个对象是否具有等效值。因此,即使empty和data都是大小为0的双数组,data==empty也永远不会为真,因为它们不引用同一个对象


顺便说一句,我不确定你这样做有什么好的理由,而且大小为0的数组没有长度为-1的元素。如果empty有零个元素,那么创建它的意义是什么?如果它没有零元素,并且您想知道其中是否没有存储任何内容,那么您应该知道数组在初始化之后总是会存储一些内容

0-1=-1
并且没有像-1这样的索引。但是它不应该运行吗?对不起,但是你说的
它不应该运行是什么意思呢?
如果“if”部分为真,其他部分不应该发生吗?约翰卡西奇,不,不是这样的。我也尝试过,但是我得到了“Exception in thread”main“java.lang.ArrayIndexOutOfBoundsException:数组为空”@JohnKasich_2016这不是您想要的输出吗?如果您不想抛出异常,那么就不要抛出异常。@JohnKasich_2016 ofcs您的数组为空。我将其作为错误消息获取,其余代码不会运行。我希望它打印“数组为空”“然后让代码的其余部分run@JohnKasich_2016我建议发布更多代码。看来你把事情搞砸了。
if(data.length==empty.length)
{
    throw new ArrayIndexOutOfBoundsException(" Array is empty");
}else{
    System.out.println(data[data.length-1]);
}