繁体   English   中英

编写一个java数组并获得太多输出

[英]writing a java array and getting too many outputs

// declare an array (named numbs) that holds 10 ints
int[] numbs = new int[10];
// write a for loop that loops 10 times and generates a random number between 0 and 100
for (int i = 0; i < numbs.length; i++) {
    numbs[i] = (int) (Math.random() * 100 + 1);
}
// print the values
for (int number : numbs) {
    System.out.println(number);

    // write a for loop that displays to the screen each random number in the array named numbs
    for (int i = 0; i < numbs.length; i++) {
        System.out.println("the random number for element " + i + " is " + numbs[i]);
    }
}

我希望我的最终输出只显示10个数字,但我得到的是10个重复10次的数字,而不是元素1的随机数是1,元素2的随机数是2,随机数...等到10

我得到元素1的随机数是1,元素2的随机数是2,随机数...等到10然后它回到最顶层的数字并打印“元素1的随机数是1”再然后“元素2的随机数再次为2”

我究竟做错了什么?

您正在使用嵌套的for循环。 你只需要你的第三个for循环。

 public class FArray { public static void main(String[] args) { int[] numbs = new int[10]; for (int i = 0; i < numbs.length; i++) { numbs[i] = (int) (Math.random() * 100 + 1); } // print the values for (int i=0; i<numbs.length; i++) { System.out.println("the random number for element "+ i +" is "+numbs[i]); } } } 

您将数据打印10次X 10次因为您有嵌套循环通知可能是您想要这样的事情

    public static void main(String[] args) {
    // declare an array (named numbs) that holds 10 ints
    int[] numbs = new int[10];
    // write a for loop that loops 10 times and generates a random number
    // between 0 and 100
    for (int i = 0; i < numbs.length; i++) {
        numbs[i] = (int) (Math.random() * 100 + 1);
    }

    // write a for loop that displays to the screen each random number in
    // the array named numbs
    for (int i = 0; i < numbs.length; i++) {
        System.out.println("the random number for element " + i + " is " + numbs[i]);
    }
}

}

我希望我的最终输出只显示10个数字,但我得到的是10个重复10次的数字,而不是元素1的随机数是1,元素2的随机数是2,随机数...等到10

你循环2次,一个for循环可以看到数组中的所有随机元素...删除其中一个循环(例如删除增强的for循环)只看到你生成的10个数字..

例:

    public static void main(String[] args) throws ParseException {
        // declare an array (named numbs) that holds 10 ints
        int[] numbs = new int[10];
        // write a for loop that loops 10 times and generates a random number between 0 and 100
        for (int i = 0; i < numbs.length; i++) {
            numbs[i] = (int) (Math.random() * 100 + 1);
        }
        // print the values

        // write a for loop that displays to the screen each random number in the array named numbs
        for (int i = 0; i < numbs.length; i++) {
            System.out.println("the random number for element " + i + " is " + numbs[i]);
        }
}

代码的最后一部分:

for (int number : numbs) {
    System.out.println(number);
// write a for loop that displays to the screen each random number in the array named numbs
for (int i = 0; i < numbs.length; i++) {
    System.out.println("the random number for element " + i + " is " + numbs[i]);
}

你告诉它要做以下事情:foreach int存储在数组numbs中,打印那个int,然后,foreach元素numbs [i]用i = 0..numbs.length-1打印那句话。

因此,您的数组中有10个元素。 对于每个元素,您再次检查阵列的所有位置。 这就是为什么你得到10 * 10的结果。

写下面的内容就足够了:

 for (int i = 0; i < numbs.length; i++) {
    System.out.println("the random number for element " + i + " is " + numbs[i]);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM