【问题标题】:Print the value of the array in a new line every 20 times每 20 次在新行中打印数组的值
【发布时间】:2016-04-03 21:31:23
【问题描述】:

我必须编写一个程序,在其中生成 200 个介于 1 和 100 之间的随机数。

    // Create an array to generate 200 numbers
    int Numbers [] = new int [200];

    // Create an array to split the numbers up into 5 categories
    int Count [] = new int [5];

    // Start a new loop
    for (int i = 0; i < Numbers.length; i++) {
        // Generate numbers between 1 and 100
        Numbers [i] = (int) (Math.random () * 100) + 1;
    }

    // Sort the array from least to greatest
    Arrays.sort(Numbers);

这就是我遇到的问题的开始(我相信)。

每 20 行,程序应显示一个新行,然后继续打印其余数字。

我的问题是,似乎并非所有数字都在打印...在生成的 200 个数字中,我总共只打印了 190 个数字。

    // Start a new loop
    for (int i = 0; i < Numbers.length; i++) { 
        if (i % 21 != 0) {
            System.out.print(Numbers [i] + " ");  
        }
        else {
            System.out.print(Numbers [i] + "\n");
        }
    }

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • 如果必须每 20 个数字打印一个新行,为什么要使用 i % 21 而不是 i % 20?另外,请尊重 Java 命名约定。变量以小写字母开头:numbers,而不是Numbers
  • 另外,不要写Numbers [i]Math.random ()。删除代码中这些左括号和左括号之前的空格,它只会妨碍可读性。

标签: java arrays printing


【解决方案1】:

你的情况应该是这样的

if (i % 20 != 0 || i == 0)

如果是i % 20 == 0,你应该换行,但不是在第一种情况下(0 % 20 == 0


简化

for (int i = 0; i < Numbers.length; i++) {
    System.out.print(Numbers[i] + (i%20 != 0 || i == 0 ? " " : "\n"));
}

【讨论】:

    【解决方案2】:

    首先,请使用printlnSystem.lineSeparator()(因为'\n' 不是每个平台上的行分隔符)。您还需要为每 20 个数字使用 % 20 == 0。类似的,

    for (int i = 0; i < Numbers.length; i++) {
        if (i % 20 == 0) {
            System.out.println();
        } else {
            System.out.print(" ");
        }
        System.out.print(Numbers[i]);
    }
    

    使用三元类似

    for (int i = 0; i < Numbers.length; i++) {
        System.out.print(i % 20 == 0 ? System.lineSeparator() : " ");
        System.out.print(Numbers[i]);
    }
    

    最后,按照约定,Java 变量以小写字母开头。所以请将Numbers重命名为小写,如numbers

    【讨论】:

    • 最好是if (i % 20 == 19),在每个序列的结束而不是开始处放置一个返回值吗? (以及我看到的空格 - 打印数字之后,而不是之前。)
    【解决方案3】:
        for (int i = 1; i <= Numbers.length; i++) {
            //
            if (i >= 19 && i % 20 == 0) {
                //
                System.out.print(Numbers[i - 1] + "\n");
            }
    
            //
            else {
                //
                System.out.print(Numbers[i - 1] + " ");
    
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 2015-07-03
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多