Java中数组的理解困难
有人能解释一下为什么我的for循环在要求int但找到double时出错吗?我需要我的数组是双精度的,为什么我的方法不起作用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];
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吗?非常感谢!我忘了!