代码之家  ›  专栏  ›  技术社区  ›  A_Pickle

如果Print语句中的Double变量已经声明/初始化为Double,为什么需要将Int强制转换为Double变量?[副本]

  •  -2
  • A_Pickle  · 技术社区  · 1 年前

    我正试图通过for循环遍历Java中的一个数组,但由于某种原因,如果我强制执行“int”,它只会打印列表中的doubles。否则,我会得到一个“类型不匹配:无法将double转换为int”,即使所有的数字都是double,而且我从未尝试过将任何数字转换为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中看到了一个建议,上面写着“向int添加cast”,下面是它的样子:

    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
    

    我的问题是为什么?为什么我需要铸造它,当我这样做的时候,为什么所有的东西都印成了替身?结果不应该是整数吗?

    再次感谢任何澄清。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Em Ae    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);
        }