1. 程式人生 > >一道打印菱形的面試題

一道打印菱形的面試題

表示 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;//轉換標誌
        
        int
k=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(); } } }
View Code

最後結果如圖

技術分享圖片

然後空實心打印 ,只需要把第二次打印設置為*就可以,修改如下

技術分享圖片
//判斷第二次是否打印的標誌是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

結果如下

技術分享圖片

一道打印菱形的面試題