详细讲解用特殊符号画字的代码,不是吃饱了撑着。。。循环和封装的概念都在里面!

public class Name {
     /*因为在汉字笔画中,横竖撇捺就可以组成一个汉字了,所以在这里只需要初始化之后调用横竖撇捺四个方法
      * 就可以画出自己的名字中的字了,也可以设置x的宽度来画出自己的全部名字,我比较懒
      * 这种考细节的我就不多讲了,就只画了一个酷字出来!
      */
     final String s1="□";
     //这里是定义你需要的字符串,一个为空心方,一个是实心方
     final String s2="■";
     final int x=40;    
     //这里定义的是行数和列数,用来实现对应的字符的排列
     final int y=40;
     String a[][]=new String[x][y];
     //这里就是正式定义数组,数组的大小就通过上面的x和y决定

     void printOut(){
         //这里是输出这个数组,因为是一行一行的输出,所以x的循环再里面,先循环
         for(int i=0;i<y;i++){
             //这个是y的循环,在x循环完一次之后,y加1
             for(int j=0;j<x;j++){
                 //在y每加1的时候,循环一整个x的元素
                 System.out.print(a[i][j]);
                 //这是输出语句
             }
             System.out.println();
             //这是换行,用于输出完一行之后换行再输出下一行
         }
     }
     void setE(){
         //这个是用来初始化所有的数组元素为空心方
        for(int i=0;i<y;i++){
             for(int j=0;j<x;j++){
                 a[i][j]=s1;
                 //和上面输出一样的循环,只不过这个是循环设值
             }
         }
     }
     void setB(){
         //这个是用来设置边框,把四条边都变成实心方
         for(int i=0;i<y;i++){
             a[0][i]=s2;
             //所以下面的四条边都是设置成s2也就是实心方
             a[y-1][i] = s2;
             a[i][y-1] =s2;
             a[i][0] =s2;
         }
     }
     void setX(int y,int beginX,int endX){
         //这个是用来画一横
         for(int i=beginX-1;i<endX-1;i++){
             //y轴不变,x有范围,提供起始的x和结束的x就可以画一横了
              a[y-1][i]=s2;
         }
     }
     void setY(int x,int beginY,int endY){//这个是用来画一竖
        for(int i=beginY-1;i<endY-1;i++){
            //x轴不变,y有范围,提供起始的y和结束的y就可以画一横了
            a[i][x-1]=s2;
        }
     }
     void setW(int x,int y){//这个是用来画一撇
         for(int i=x;i<x+3;i++){
             a[i][y]=s2;
             //因为撇和捺从左往右x都是增加的,有区别的就是y轴
             //撇从左往右y是减少的,所以y--;
             y--;
         }
     }
      void setV(int x,int y){
         for(int i=x;i<x+3;i++){
             a[i][y]=s2;
             //而这个从左往右y是增加的,所以y++;
             y++;
         }
     }
}

每个注释我都尽量的写的明白,当然必须得有点java基础才能看的明白的。

下面是主方法的类:

public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Name name=new Name();
        //创建一个封装好的类的对象来调用
        name.setE();
        name.setB();
        //初始化对象,并且画出边框


        name.setX(6, 4, 17);
        name.setY(4, 12, 34);
        name.setX(12, 4, 16);
        name.setY(16, 12, 34);
        name.setY(8, 7, 24);
        name.setY(11, 7, 24);
        name.setX(24, 5,9);
        name.setX(24,11, 17);
        name.setX(29,6, 15);
        name.setX(34, 4,17);
        //这里是通过设值画出左边的偏旁
        name.setY(23, 6, 12);
        name.setW(11,21);
        name.setX(10, 23, 37);
        name.setX(18, 19, 38);
        name.setY(29, 6, 18);
        //这里是画出右边的上面部分
        name.setX(22, 20, 37);
        name.setX(34, 20, 37);
        name.setY(20, 22, 35);
        name.setY(37, 22, 35);
        //这里是画出右边的下面部分
        name.printOut();
        //然后调用打印方法,打印出我们的二维数组对象   
    }
}

在编程的时候,尽量面向对象,哪样主方法就不会显得很复杂,出现了bug也不知道哪里出错,主方法简单的话,修改起来也容易很多。这个是面向对象编程的最大好处之一了,如果没有学会封装的话,面向对象的编程也会显得很复杂而不知从何修改的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值