正方形:5行5列
public static void main(String[] args){ //外層表示打印行數 for(int i=1;i<=5;i++){ //內層表示每行打印的個數 for(int j=1;j<=5;j++){ sout("*"); } //打印五個就換行 sout(); } }
直角三角形
第一行一個星,第二行兩個星,第三行三個星 ······以此確定個數與行數的關系
public static void main(String[] args){ //外層循環控制打印的行數 for(int i=1;i<=5;i++){ //內層控制每行打印的個數,個數和行數相等(即內層循環的次數和外層表示行數的變量相等) for(int j=1;j<=i;j++){ sout("*"); } //打印完一行換行 sout(); } }
倒直角三角形:外層遞增,內層遞減;外層內層都遞增;外層遞減,內層遞增
外層增,內層減 public static void main(String[] args){ //外層表示行數 for(int i=1;i<=5;i++){ //內層表示每行個數 //每行打印星星的個數控制內層循環的次數 for(int j=5;j>=i;j--){ sout("*"); } //打完一行星星換行 sout(); } } 外層減,內層增 public static void main(String[] args){ //外層表示行數 for(int i=5;i>=1;i--){ //內層表示每行個數 //每行打印星星的個數控制內層循環的次數 for(int j=1;j<=i;j++){ sout("*"); } //打完一行星星換行 sout(); } } 內層外層都遞增 public static void main(String[] args){ //外層表示行數 for(int i=1;i<=5;i--){ //內層表示每行個數 //每行打印星星的個數控制內層循環的次數 for(int j=1;j<=6-i;j++){ sout("*"); } //打完一行星星換行 sout(); } } 內層外層都遞減 public static void main(String[] args){ //外層表示行數 for(int i=5;i>=1;i--){ //內層表示每行個數 //每行打印星星的個數控制內層循環的次數 for(int j=5;j<=5+i;j++){ sout("*"); } //打完一行星星換行 sout(); } }
等腰三角形:打印空格(空格數量遞減),打印星星(星星逐行遞增)
public static void main(String[] args){ //外層控制行數 for(int i=1;i<=5;i++){ //內層空格數量遞減 for(int j=5;j>=i;j--){ sout(" "); } //內層星星數量是行數的兩倍減一 for(int k=1;k<=(2*i-1);k++){ sout("*"); } sout(); } }
菱形:要求輸入菱形大小的總行數(奇數),會對應變化菱形的大小
public static void main(String[] args){ Scanner sc=new Scanner(System.in); int row; do{ //偶數行或者是行數太少則繼續進入循環重新輸入 System.out.println("請輸入菱形的大小:"); row=sc.nextInt(); }while(row%2==0||row<=3) //計算上半部分行數 int top=row/2+1; //計算下半部分行數 int bottom=row-top; //打印上半部分 for(int i=1;i<=top;i++){ //上半部分空格數量遞減 for(int j=top;j>=i;j--){ System.out.print(" "); } //上半部分星星遞增,數量與行數的關系是2*i-1 for(int k=1;k<=2*i-1;k++){ System.out.print("*"); } //每打完一行換行 System.out.println(); } //打印下半部分 for(int i=1;i<=bottom;i++){ //空格是正直角三角,行數和個數相同遞增 for(int j=1;j<=i;j++){ System.out.print(" "); } //星星隨行數增加星星個數遞減 for(int k=1;k<=row-2*i;i++){ System.out.print("*"); } //每打完一行換行 System.out.println(); } }
空芯菱形
public static void main(String[] args){ Scanner sc=new Scanner(System.in); int row; do{ //偶數行或者是行數太少則繼續進入循環重新輸入 System.out.println("請輸入菱形的大小:"); row=sc.nextInt(); }while(row%2==0||row<=3) //計算上半部分行數 int top=row/2+1; //計算下半部分行數 int bottom=row-top; //打印上半部分 for(int i=1;i<=top;i++){ //開頭空格數量遞減 for(int j=top;j>i;j--){ System.out.print(" "); } //打印星星部分 for(int k=1;k<=2*i-1;k++){ //如果是第一個和最后一個就打印星星 if(k==1||k==2i-1){ System.out.print("*"); } //其余中間部分打印空格 else{ System.out.print(" "); } //打印完一行就換行 System.out.println(); } } //打印下半部分 for(int i=1;i<bottom;i++){ //打印空格,空格逐行增加 for(int k=1;k<=i;k++){ System.out.print(" "); } //打印星星 for(int j=1;k<=row-2*i;k++){ //如果是第一個和最后一個就打印星星 if(k==1||k==row-2*i){ System.out.print("*"); } //其余中間部分打印空格 else{ System.out.print(" "); } //打印完一行就換行 System.out.println(); } } }