为什么Java在打印大随机数时会报告不匹配?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

Java在尝试打印大数字并存储数组时报告类型不匹配异常。

我正在学习一些Java。我正在做的课程的一个练习,要求我生成一些随机数并将它们存储在一个数组中。只要我生成整数,一切正常,我可以毫无困难地使用out.print打印它们。

但是,当我生成大数字并尝试打印它们时,Java会在每行循环的行中通知类型不匹配。

package clases;

public class Arrays_3 {
    public static void main (String [] args) {
        long [] array_random=new long[150];
        for (int i=0;i<array_random.length;i++) {
            array_random[i]=(long)Math.round(Math.random()*100000) ;
        }

        for (long elemento:array_random) {
            System.out.println(array_random[elemento]);
        }
    }
}

这是我在运行上面代码后在Eclipse控制台上遇到的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from long to int

    at clases.Arrays_3.main(Arrays_3.java:17)

第17行是System.out.print方法的地方。

提问于
用户回答回答于

Elemento是一个long,而数组是由整数索引的。

此外,使用for(long elemento:array),您将创建一个迭代器,在循环的每次迭代中返回一个数组值。因此,您可以直接打印它。

for (long elemento : array) {
    System.out.println(elemento);
}

如果要查找数组的元素,则应迭代索引变量

for (int idx=0;idx<array.length;idx++) {
    System.out.println(array[idx]);
}
用户回答回答于

我想你正在尝试打印元素。循环的是值(int类型)而不是索引(long类型)。

      for (long elemento:array_random) {
            System.out.println(elemento);
        }

扫码关注云+社区

领取腾讯云代金券