以下是代码:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}
我收到以下错误:
不兼容的类型:可能从double转换为int
的有损转换
虽然代码中没有使用int
。为什么会这样?
答案 0 :(得分:3)
数组的索引始终为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;
}
答案 1 :(得分:1)
数组索引不能是float
或double
必须是integer
因此,您必须typecast
至int
作为hundredElementsMillionArray[(int)ii]
或最佳解决方案,您应将索引变量用作int
类型。