Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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,有人能解释一下为什么我的for循环在要求int但找到double时出错吗?我需要我的数组是双精度的,为什么我的方法不起作用 public class RingBuffer { private double[] EmptyBuffer; private int size; private int capacity; public RingBuffer(int capacity){ EmptyBuffer = new double[capacity];

有人能解释一下为什么我的for循环在要求int但找到double时出错吗?我需要我的数组是双精度的,为什么我的方法不起作用

public class RingBuffer 
{
   private double[] EmptyBuffer;
   private int size;
   private int capacity;

     public RingBuffer(int capacity){
        EmptyBuffer = new double[capacity];


    }

    public int size(){
        int counter = 0; 
        for(int i: EmptyBuffer){
            if(EmptyBuffer[i] != null)
                counter++;
            }

        return counter;
    }
数组是双精度数组,因此对象必须是双精度数组。如果你想要的话,你可以把双精度转换成整数


数组是双精度数组,因此对象必须是双精度数组。如果需要,可以将double转换为int

增强for循环的语义

for (int i : EmptyBuffer) { ... }
是这样的:“对于double数组中的每个整数元素i…”

正如你所看到的,这毫无意义。数组是一个双精度数组,因此不能遍历它包含的每个整数元素

此外,您的代码片段中有以下语法:

if(EmptyBuffer[i] != null)

由于EmptyBuffer是一个double数组,因此它是一个基元类型的数组,即-而不是-引用类型。由于基元类型不是引用类型,它们可能不是null,因此测试数组元素是否为null是没有意义的。

增强for循环的语义

for (int i : EmptyBuffer) { ... }
是这样的:“对于double数组中的每个整数元素i…”

正如你所看到的,这毫无意义。数组是一个双精度数组,因此不能遍历它包含的每个整数元素

此外,您的代码片段中有以下语法:

if(EmptyBuffer[i] != null)

由于EmptyBuffer是一个double数组,因此它是一个基元类型的数组,即-而不是-引用类型。由于基元类型不是引用类型,它们可能不是null,因此测试数组元素是否为null是没有意义的。

如果不正确使用foreach循环,请尝试以下操作:

public class RingBuffer 
{
   private double[] EmptyBuffer;
   private int size;
   private int capacity;

     public RingBuffer(int capacity){
        EmptyBuffer = new double[capacity];


    }

    public int size(){
        int counter = 0; 
        for(double element : EmptyBuffer){
            if(element != 0) // Testing for null makes no sense! Test for non-zero?
                counter++;
            }

        return counter;
    }

此外,测试double是否为null没有意义。也许您应该测试它是否为非零。

如果不正确地使用foreach循环,请尝试以下操作:

public class RingBuffer 
{
   private double[] EmptyBuffer;
   private int size;
   private int capacity;

     public RingBuffer(int capacity){
        EmptyBuffer = new double[capacity];


    }

    public int size(){
        int counter = 0; 
        for(double element : EmptyBuffer){
            if(element != 0) // Testing for null makes no sense! Test for non-zero?
                counter++;
            }

        return counter;
    }

此外,测试double是否为null没有意义。也许您应该测试它是否为非零。

提示:原语(如double、int等)的值是否为null?非常感谢!我忘了!提示:原语(比如double,int,…)的值可以为null吗?非常感谢!我忘了!