为什么我得到'不兼容的类型错误'?

时间:2015-08-10 07:54:28

标签: java arrays int double incompatibility

以下是代码:

double[] hundredElementsMillionArray = new double[10000000]; 

        for(double ii=0;ii<10000000;ii++){
            hundredElementsMillionArray[ii] = ii;
        }

我收到以下错误:

  

不兼容的类型:可能从double转换为int

的有损转换

虽然代码中没有使用int。为什么会这样?

2 个答案:

答案 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)

数组索引不能是floatdouble必须是integer 因此,您必须typecastint作为hundredElementsMillionArray[(int)ii]或最佳解决方案,您应将索引变量用作int类型。