打印一個5行三角形
方法一:
public class TestDemo01 {
public static void main(String[] args) {
int outLeft = 5;
int outRight = 5;
for (int row = 0; row < 5; row++) {
for (int i = 1; i <= 9; i++) {
if (i >= outLeft && i <= outRight) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
--outLeft;
++outRight;
System.out.println();
}
}
}
我的思路是先在excel里畫了一個三角形,然后知道了每行分別應該打印多少的星號多少的空格。如圖所示:
所以可以看到每行分別應該打印1、3、5、7、9個*號。
然后從中間的第5個字符位置開始向左右打印星號,其他的字符位置打印空格。
最后效果如圖:
方法二:
public class TestDemo02 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法二的思路是:設想要打印的三角形是在一個正方形中剪切出來的。
如圖,里層第一個for循環先打印這個三角形(實際應該打印空格):
然后打印第二個三角形,這個三角形其實就是第一個三角形的中心對稱,因此里層第二個for循環條件就是第一個的對稱,如圖所示:
然后再打印第三個三角形,如圖所示(因為前面兩個循環注釋掉了,所以這個三角形的實際位置應該是在前面兩個三角形的右邊):
最后的整體效果如圖: