为什么我会收到“不兼容的类型错误”?

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;
}

数组索引不能是floatdouble,必须是integer 所以你必须 typecastint 作为 hundredElementsMillionArray[(int)ii] 或者最好的解决方案是你应该使用索引变量作为 int 类型。