为什么我的程序在我没有要求的位置打印下一行



基本上我必须打印两个traingle,上下颠倒,下下颠倒。它们都是相同的腿,我的程序运行良好,但由于某种原因,我的第二个三角形稍微向右倾斜。有人能向我解释一下如何修复以及为什么会出现这个错误吗?

public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Enter number");
int num = s.nextInt();

for (int i = 0; i < num; i++) {
for (int j = num; j > i; j--) {
System.out.print("*");
System.out.print(" ");
}

System.out.println();

for (int k = 0; k <= i; k++) {
System.out.print(" ");
}
}
// second part


for (int i = 0; i < num; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
System.out.print(" ");
}

System.out.println();

for (int k=num; k>i; k-=2) {
System.out.print(" ");
}
}
}
}
* * * 
* * 
* 
* 
* * 
* * * 

几个小调整:

  • 在第一个外部for循环的末尾
  • 在末端的第二个外环中

参见下方的代码注释

for (int i = 0; i < num; i++) {
for (int j = num; j > i; j--) {
System.out.print("*");
System.out.print(" ");
}

System.out.println();

for (int k = 0; k < i; k++) { // stop condition changed
System.out.print(" ");
}
if (i < num -1) { // this was added
System.out.print(" ");
}
}
// second part

for (int i = 0; i < num; i++) {
for (int j = 0; j <= i; j++) {
System.out.print("*");
System.out.print(" ");
}

System.out.println();

for (int k=num-1; k>i+1; k-=1) { // stop condition change
System.out.print(" ");
}
}

最新更新