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

来源:互联网 发布:淘宝店铺手机端代码 编辑:程序博客网 时间:2024/05/16 19:36
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