如果已将其声明/初始化为 Double,为什么需要在 Print 语句中将 Int 转换为 Double 变量?

问题描述 投票:0回答:1

我试图通过 for 循环遍历 Java 中的数组,但由于某种原因,如果我强制转换“int”,它只会打印列表中的双精度数。否则,我会收到“类型不匹配:无法将 double 转换为 int”,即使所有内容都是 double,而且我从未尝试将任何数字转换为 int。我是一个完全的编程初学者,因此非常感谢任何和所有的帮助。这是代码:

打包MyProgram1; 导入cs1.键盘;

公共课 MyProgram1{

public static void main(String[] args){

    double [] array = {1.0,2.0,4.0,2.5,5.0};
    for (double index = 0.0; index <= array.length-1.0; index++){
                    \\The line below is what results in the error
        System.out.println(array[index]);
                    }

}

}

P.S 顺便说一句,我使用 Eclipse IDE。

我看到一个建议(在 Eclipse 中)说“将强制类型转换添加到 int”,如下所示:

打包MyProgram1; 导入cs1.键盘;

公共课 MyProgram1{

public static void main(String[] args){
    double [] array1 = {1.0,2.0,4.0,2.5,5.0};
    for (double index = 0.0; index <= array1.length-1.0; index++)
        System.out.println(array1[(int)index]);

        

}

}

工作完美,打印内容如下: 1.0 2.0 4.0 2.5 5.0

我的问题是为什么?为什么我需要转换它,当我这样做时,为什么所有内容都打印为双精度?结果不应该是整数吗?

再次感谢任何澄清。

java arrays eclipse casting
1个回答
0
投票

问题是您正在使用“double”变量迭代数组。数组索引是integer类型

将“index”变量类型更改为 int 应该没问题,即

public static void main(String[] args){

    double [] array = {1.0,2.0,4.0,2.5,5.0};
    for (int index = 0; index <= array.length-1; index++){
        System.out.println(array[index]);
  }
}

© www.soinside.com 2019 - 2024. All rights reserved.