如果 int 已经声明/初始化为 double,为什么需要在 print 语句中将 int 转换为 double 变量?[复制]

Why Do I Need to Cast Int To A Double Variable In A Print Statement If Its Already Declared/Initialized As A Double? [duplicate]

提问人:A_Pickle 提问时间:10/23/2023 最后编辑:Hovercraft Full Of EelsA_Pickle 更新时间:10/23/2023 访问量:46

问:

我正在尝试通过 for 循环遍历 Java 中的数组,但由于某种原因,如果我转换“int”,它只会打印我列表中的双精度。否则,即使一切都是双精度,我也会得到“类型不匹配:无法将双精度转换为整数”,并且我从未尝试过将任何数字转换为整数。我是一个彻头彻尾的编程乞丐,所以非常感谢任何和所有的帮助。代码如下:

package MyProgram1;
import cs1.Keyboard;

public class 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]);
                        }
    
    }
}

我看到一个建议(在eclipse中),上面写着“add cast to int”,这是看起来像的:

package MyProgram1;
import cs1.Keyboard;

public class 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 数组 Eclipse 转换

评论

2赞 Iłya Bursov 10/23/2023
数组中的值是双精度值,但索引不是双精度值 - 数组中的索引是整数
0赞 Old Dog Programmer 10/23/2023
错误在“打印语句”中是无关紧要的。只要尝试使用 a 作为数组索引,它就会发生。double

答:

0赞 Em Ae 10/23/2023 #1

问题是你正在用“double”变量遍历你的数组。数组索引为整数类型

将您的“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]);
  }
}

还有其他方法可以遍历数组。HEre 是一个你不需要特殊索引的地方。相反,您需要一个变量(与数组类型相同)来保存该值,即,

    for (double val : array) {
      System.out.println(val);
    }