自己的基礎一直很薄弱。今天看了韓順平老師的講座視頻補充了很多。
把用for循環打印左半邊三角形、右半邊三角形、實心、空心三角形做了一個整理。
和視頻中的代碼略微有些區別,我是以i=0開始定義數組。所以邏輯表達式也有不同的地方。
不過令i=1更容易理解,邏輯也比較容易推理。但其實數組的下標都是從零開始的。
public class demo {
public static void main(String[]args)
{
int lay=4;
halfRight(lay);
System.out.println();
halfLeft(lay);
System.out.println();
doublePrint(lay);
System.out.println();
emptyPrint(lay);
}
public static void halfRight(int lay) {
for(int i=0;i<lay;i++) {
for(int j=0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
public static void halfLeft(int lay) {
for(int i=0;i<lay;i++) {
for(int k=0;k<lay-1-i;k++) {
System.out.print(" ");
}
for(int j=0;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
public static void doublePrint(int lay) {
for(int i=0;i<lay;i++) {
for(int k=0;k<lay-1-i;k++) {
System.out.print(" ");
}
for(int j=0;j<2*i+1;j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void emptyPrint(int lay) {
for(int i=1;i<=lay;i++) {
for(int k=1;k<=lay-i;k++) {
System.out.print(" ");
}
//考慮星號時,先忽略空格打法,目標如下:
// *
// * *
// * *
// *******
for(int j=1;j<=(2*i-1);j++) {
if(i==1 || i==lay) System.out.print("*");
//第一行和最後一行打滿
else {
if(j==1||j==2*i-1) {
System.out.print("*");
//第一列或者最後一列再打星號
}
else {
System.out.print(" ");
//其他列都打空格
}
}
}
System.out.println();
}
}
}
運行結果: