使用嵌套 for 循环从用户输入中打印给定的数字模式
Print a given number pattern from user input using nested for loop
我是编程新手。目前正在学习 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 循环以获得我想要的结果。
如有任何帮助,我们将不胜感激。谢谢!
不要从外循环打印任何东西,只打印新行
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
问题是同时打印换行符和 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();
}
}
}
为了避免其他答案的尾随 space,
不要在循环开始时打印 i
,而是打印 1
。
然后从2
开始内循环,在每个值之前打印一个space。并在内部循环之后打印一个新行。
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
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
我是编程新手。目前正在学习 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 循环以获得我想要的结果。
如有任何帮助,我们将不胜感激。谢谢!
不要从外循环打印任何东西,只打印新行
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
问题是同时打印换行符和 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();
}
}
}
为了避免其他答案的尾随 space,
不要在循环开始时打印 i
,而是打印 1
。
然后从2
开始内循环,在每个值之前打印一个space。并在内部循环之后打印一个新行。
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
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