【问题标题】:Why I am getting `incompatible types error`?为什么我收到“不兼容的类型错误”?
【发布时间】:2015-08-10 07:54:27
【问题描述】:

代码如下:

double[] hundredElementsMillionArray = new double[10000000]; 

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

我收到以下错误:

不兼容的类型:从 double 到 int 的可能有损转换

虽然代码中没有使用int。为什么呢?

【问题讨论】:

  • 您的代码将无法编译,因为数组的索引永远不会是双精度数。
  • 我不是 java 专家,但 double ii 应该是 int ii。
  • 在你的 for 循环中试试这个 int ii=0;ii&lt;hundredElementsMillionArray;ii++

标签: java arrays int double incompatibility


【解决方案1】:

数组的索引始终是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;
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      相关资源
      最近更新 更多