为什么我会收到“不兼容的类型错误”?
Why I am getting `incompatible types error`?
代码如下:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}
我收到以下错误:
incompatible types: possible lossy conversion from double to int
尽管代码中没有使用 int
。为什么?
数组的索引始终是int
,因此hundredElementsMillionArray[ii]
需要将ii
转换为int
,但由于这样的转换可能会导致丢失的信息,没有显式转换是不允许的。
这将通过编译:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[(int) ii] = ii;
}
这也将通过编译:
double[] hundredElementsMillionArray = new double[10000000];
for(int ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}
数组索引不能是float
或double
,必须是integer
所以你必须 typecast
到 int
作为 hundredElementsMillionArray[(int)ii]
或者最好的解决方案是你应该使用索引变量作为 int
类型。
代码如下:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}
我收到以下错误:
incompatible types: possible lossy conversion from double to int
尽管代码中没有使用 int
。为什么?
数组的索引始终是int
,因此hundredElementsMillionArray[ii]
需要将ii
转换为int
,但由于这样的转换可能会导致丢失的信息,没有显式转换是不允许的。
这将通过编译:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[(int) ii] = ii;
}
这也将通过编译:
double[] hundredElementsMillionArray = new double[10000000];
for(int ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}
数组索引不能是float
或double
,必须是integer
所以你必须 typecast
到 int
作为 hundredElementsMillionArray[(int)ii]
或者最好的解决方案是你应该使用索引变量作为 int
类型。