java列印空心菱形
之前已經成功寫過一次程式碼,今天重新看這個題目時,一下子又沒了思路,在草稿紙上比劃了大概十分鐘才想到實現的思路。思路跟上次實現的完全一樣,發現時間長了就忘記了!真是好記性不如爛筆頭,何況我這麼差的記性呢!現把解決該問題時,自己的思路寫下來分享一下。(注意重點看我怎麼思考的,不要一下子就看程式碼)
圖 1
要輸出如圖1所示的菱形,第一反應是看看這個菱形有什麼特點。在草稿紙上比劃了半天,將圖1轉化成了圖2用數字表示的圖
圖 2
比較圖1和圖2發現有以下特點:
(1)圖2中的每一個數字代表圖1中每個*號在所在行的列號。
(2)6+6、5+7、4+8、3+9、2+10、1+11均等於12。
由於菱形是對稱的,所以先考慮上半部分,即如圖3所示
圖 3
仔細觀察圖3,可以發現:
(1)圖3為6行11列。
(2)左半部分第1行為6、第2行為5、..............、第6行為1;由此可知外迴圈應使用for(int i=6;i>=1;i--)
(3)用i代表行號,j代表列號;當i=j或者j=12-i時該位置的應輸出*號,其他位置輸出空格。
有了以上分析,就可以寫出輸出圖3所示圖形的核心程式碼,如下:
for(int i=6;i>=1;i--){ //菱形的上半部分
for(int j=1;j<=11;j++){
if(i==j||j==12-i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
要想輸出菱形的下半部分,只需將外迴圈改為for(int i=2;i<=6;i++)即可。
看到這兒,相信你不用看下面的完整程式碼,自己就可以完全寫出實現的程式碼了!如果你還沒有寫,動手實踐一下吧!
附錄:完整程式碼:
public class Diamond {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=6;i>=1;i--){ //菱形的上半部分
for(int j=1;j<=11;j++){
if(i==j||j==12-i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
for(int i=2;i<=6;i++){ //菱形的下半部分
for(int j=1;j<=11;j++){
if(i==j||j==12-i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
---------------------