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也不知道哪里出错,主方法简单的话,修改起来也容易很多。这个是面向对象编程的最大好处之一了,如果没有学会封装的话,面向对象的编程也会显得很复杂而不知从何修改的!