以下是代码:
double[] hundredElementsMillionArray = new double[10000000];
for(double ii=0;ii<10000000;ii++){
hundredElementsMillionArray[ii] = ii;
}我收到以下错误:
不兼容类型:可能从双重到int的有损转换
虽然代码中没有使用int。为什么是这样?
发布于 2015-08-10 07:56:01
数组的索引始终是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;
}发布于 2015-08-10 08:00:53
数组索引不能是float或double,必须是integer,所以必须以hundredElementsMillionArray[(int)ii]的形式从typecast到int,或者最好的解决方案是使用索引变量作为int类型。
https://stackoverflow.com/questions/31914327
复制相似问题