【问题标题】:Print a given number pattern from user input using nested for loop使用嵌套的 for 循环从用户输入中打印给定的数字模式
【发布时间】:2020-03-11 11:45:35
【问题描述】:

我是编程新手。我目前正在学习 Java,现在在嵌套循环中,并且卡住了。

所以我想做的是编写一个从用户那里获取整数的程序

打印行,例如如果用户输入是 4,那么结果应该是这样的:

1

1 2

1 2 3

1 2 3 4

到目前为止,这是我的代码:

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number of rows:");
        int number = input.nextInt();
        for (int i = 1; i <= number; i++) {
            System.out.println(i);
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " ");
            }
        }
    }
}

但它会在末尾多打印一行,例如:

1

1 2

1 2 3

1 2 3 4

1 2 3 4

我很难弄清楚为什么。

我想这是我的第一个 for 循环,但我不知道如何修复 for 循环以获得我想要的结果。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 什么意思,最后多出一行
  • @Stultuske 刚刚在帖子中添加,感谢您指出:)
  • 删除System.out.println(i);并在嵌套for循环后添加System.out.println();

标签: java for-loop nested-loops


【解决方案1】:

不要从外循环打印任何东西,只打印新行

for (int i = 1; i <= number; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + " ");
    }
    System.out.println();
}

输出

1 
1 2 
1 2 3 
1 2 3 4 

【讨论】:

    【解决方案2】:

    为了避免其他答案的尾随空格, 而不是在循环开始时打印i,而是打印1。 然后从2 开始内部循环并在每个值之前打印一个空格。并在内循环之后打印一个新行。

    for (int i = 1; i <= number; i++) {
        System.out.print("1");
        for (int j = 2; j <= i; j++) {
            System.out.print(" " + j);
        }
        System.out.println();
    }
    

    打印:

    1
    1 2
    1 2 3
    1 2 3 4

    【讨论】:

      【解决方案3】:

      问题是同时打印换行符和i...只需在for 循环之后处理新行。内部循环可以处理所有的打印。

      import java.util.Scanner;
      
      public class Test {
          public static void main(String[] args) {
              Scanner input = new Scanner(System.in);
              System.out.println("Enter number of rows:");
              int number = input.nextInt();
      
              for (int i = 1; i <= number; i++) {
                  for (int j = 1; j <= i; j++) {
                      System.out.print(j + " ");
                  }
      
                  System.out.println();
              }
          }
      }
      

      【讨论】:

        【解决方案4】:
        Let's us dry run it
        at first you print 
        1
        then newline
        then j goes from 1 to 1 nut no newline now 2 is printed by i now newline
        so result 1 2
        again j goes like 1 , 2 but no newline so again 3 is printed by i then newline
        so result 1 2 3 
        again j goes like 1 , 2, 3, but no newline so again 4 is printed by i then newline
        so result 1 2 3 4
        again j goes like 1 , 2, 3, 4 // this one is the extra line
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-06
          • 2018-04-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-14
          • 2019-02-27
          相关资源
          最近更新 更多