无法理解Java中的数组

时间:2013-05-03 20:57:48

标签: 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];


    }

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

        return counter;
    }

3 个答案:

答案 0 :(得分:5)

 for(double i: EmptyBuffer){

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

答案 1 :(得分:3)

增强的for循环的语义......

for (int i : EmptyBuffer) { ... }

是这样的:“对于我的双打数组中的每个整数元素......”

正如你所看到的,这完全没有意义。您的数组是一个双精度数组,因此您无法遍历它包含的每个整数元素。

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

if(EmptyBuffer[i] != null)

由于EmptyBuffer是一个双精度数组,因此它是一个基本类型的数组,即 - 不是引用类型。因为原始类型不是引用类型,所以它们可能不为null,因此测试数组元素为null是没有意义的。

答案 2 :(得分:3)

您正在错误地使用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是没有意义的。也许你应该测试它是否为非零。