一道打印菱形的面試題
阿新 • • 發佈:2018-06-03
表示 isp splay col IE raw IT http hid
最近聽說一個萌新在面試的時候遇到了一個題目 面試要求他打印一個菱形 然後結果他沒有做出來 ,
然後我昨天晚上花了半個小時想了一下,就寫出來了,可能不是很好的解決方法 這裏僅供參考
import org.junit.Test; public class Demo { @Test public void show(){ draw(2); } //參數i表示為有2i-1層 public void draw(int i){ boolean flag=true;//轉換標誌 intView Codek=i-1;//左邊的空格數目 for(int j=1;j<2*i;j++){ for(int n=1;n<=k;n++){ System.out.printf(" "); }//左邊第一次空格打印 System.out.printf("*"); //判斷第二次是否打印的標誌是k==i-1 if(k!=i-1){for(int m=0;m<(2*i-2*(k+1))-1;m++){ System.out.printf(" ");; } System.out.printf("*"); } //k保持變化 if(flag){ k--; }else{ k++; } if(k==0) flag=!flag; //打印完畢換行 System.out.println(); } } }
最後結果如圖
然後空實心打印 ,只需要把第二次打印設置為*就可以,修改如下
//判斷第二次是否打印的標誌是k==i-1 if(k!=i-1){ for(int m=0;m<(2*i-2*(k+1))-1;m++){ System.out.printf("*");; } System.out.printf("*"); }View Code
結果如下
一道打印菱形的面試題