【问题标题】:How to fill an array with int numbers using a loop in Java如何使用Java中的循环用整数填充数组
【发布时间】:2020-02-08 02:52:18
【问题描述】:

我是一个新手,我要完成一个练习,即编写一个简单的程序,该程序将在控制台中生成一个数组:

0,

0, 1,

0, 1, 2,

我在谷歌搜索类似的问题时失败了。

非常感谢您的帮助。 这是我一直试图建立的基础,但我完全陷入困境:


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] table = new int[11];
        for ( int i = 0; i <=10; i++){
            table[i] = i;
            System.out.println(i);
        }
    }


【问题讨论】:

  • "在控制台中生成一个数组" - 请注意,控制台只是一个文本输出,即那里没有数组之类的东西。要根据需要产生输出,您可以使用 2 个循环,一个从 0 迭代到您的最大值,另一个从 0 循环到外部循环的当前值(例如 for(int i = 0; i &lt;= 10; i++ ) { for( int j = 0; j &lt; i; j++) { /*print the number here*/ } /*print a linebreak here*/ }

标签: java arrays loops for-loop


【解决方案1】:

你可以试试直播:

import java.util.stream.Collectors;
import java.util.stream.IntStream;

IntStream.range(0, 15).forEach(
        x -> System.out.println(
                IntStream.rangeClosed(0, x)
                         .mapToObj(String::valueOf)
                         .collect(Collectors.joining(", ")))
);

输出:

0
0, 1
0, 1, 2
0, 1, 2, 3
0, 1, 2, 3, 4
0, 1, 2, 3, 4, 5
0, 1, 2, 3, 4, 5, 6
0, 1, 2, 3, 4, 5, 6, 7
0, 1, 2, 3, 4, 5, 6, 7, 8
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

【讨论】:

    【解决方案2】:

    你应该使用Arrays.toString,像这样:

    import java.util.Arrays;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] table = new int[11];
            for ( int i = 0; i <=10; i++){
                table[i] = i;
                System.out.println(Arrays.toString(table));
            }
        }
    }
    

    但是,这将打印整个数组,因为它正在填充:

    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0]
    [0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0]
    [0, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0]
    [0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
    [0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0]
    [0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    如果您只想填充到目前为止的元素,则涉及更多:

    import java.util.Arrays;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] table = new int[11];
            for ( int i = 0; i <=10; i++){
                table[i] = i;
                for(int j = 0; j <= i; j++)
                {
                  System.out.print((j == 0 ? "" : ", ") + table[j]);
                }
                System.out.println();
            }
        }
    }
    

    输出:

    0
    0, 1
    0, 1, 2
    0, 1, 2, 3
    0, 1, 2, 3, 4
    0, 1, 2, 3, 4, 5
    0, 1, 2, 3, 4, 5, 6
    0, 1, 2, 3, 4, 5, 6, 7
    0, 1, 2, 3, 4, 5, 6, 7, 8
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    

    【讨论】:

    • 最后一个给出了 100% 的预期结果,它仍然仅限于“for”循环(这个练习就是使用它),这是一个完美的解决方案 - 非常感谢您的帮助!
    • 现在我正在尝试记录每一行,以便更好地理解它,我很难弄清楚这里到底发生了什么:((j == 0 ? "" : ", ") + 表[j])
    • @Mutton 它说,“当前元素,前面有一个逗号和一个空格,如果这不是该行的第一个元素”
    【解决方案3】:

    您需要两个循环,一个循环用于行,然后另一个循环用于每行的数字。

    for (int i=0; i<=10; i++) {
      table[i] = i;
      for (int j=0; j<=i; j++) {
        System.out.print(table[j]);
      }
      System.out.print("\n");
    }
    

    当然,您可能需要根据自己的喜好进一步格式化输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多