zoukankan      html  css  js  c++  java
  • 一道打印菱形的面试题

    最近听说一个萌新在面试的时候遇到了一个题目 面试要求他打印一个菱形 然后结果他没有做出来 ,

    然后我昨天晚上花了半个小时想了一下,就写出来了,可能不是很好的解决方法 这里仅供参考

    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

    结果如下

  • 相关阅读:
    体温上报系统
    Android开发概述和开发工具
    体温上报系统
    CSS padding(填充)
    CSS margin外边距实例
    CSS margin(外边距)
    CSS轮廓outline
    函数对象与闭包
    作业,3.19名称空间作用域
    名称空间/作用域
  • 原文地址:https://www.cnblogs.com/ad-zhou/p/9127891.html
Copyright © 2011-2022 走看看