package crk;//新建包 import java.util.*; public class crk {//公共类crk public void block(int B_length,int left,int right,int up,int down)//无返回值的公共方法block,输入5个整型变量 { int mm=B_length*2;//这里我理解的乘于2是因为有上下两半部分 int block_a[][]=new int[mm][mm];//新建一个10行10列的数组 int i=0;//循环 int j=0;//循环 int a=0; int b=0; //System.out.print(mm+"/n"); for(i=0;i<=mm-1;i++)//循环十次 { for(j=0;j<=mm-1;j++) //i每参与一次循环,j参与十次循环,共100次 //初始化 { block_a[i][j]=0;//这里是将符合上述循环条件的赋值为0,也就是控制空格的所在 //System.out.print(" i:"+i+" j:"+j); //System.out.print(block_a[i][j]);//============= } //System.out.print("/n");//=================== } //初始化 //===================================================== // if(kk==1) // { if(up==1)//这部分控制图形的上半部分 { for(i=0;i<=B_length;i++) //行 { a=0; for(j=0;j<=B_length-i;j++) //空格 { a++; } if(left==1) { for(j=0;j<i;j++) { block_a[i][a+j-1]=(B_length-a-j+1); //控制左上边输出的数字 //左上边 // System.out.print("*i:"+i+" j:"+j+"*"); } } /* System.out.println("/n i:"+i+" j:"+j); block_a[i][j+1]=i; //画中间的一列 */ if(right==1)//控制右上边 { for(j=1;j<=i;j++) //右上边 { //int[] nowArr = block_a[i]; //System.out.println("arr.length*****"+nowArr.length); // System.out.println("B_length+j*****"+(B_length+j)); block_a[i][B_length+j-2]=j;//控制右上变输出的数字 //System.out.print("||i:"+i+" j:"+(B_length+j-1)+"|"); } } // System.out.println("/n i:"+i+" j:"+j); } } ///////=====///====/=/=/=/=/=/=/=/=/=/=/=/=/=/==/====== if(down==1)//控制下半边 { for(i=B_length;i<=(B_length*2);i++) //行 { b=(i-B_length); a=0; for(j=0;j<=B_length-b;j++) //前面的空格 { a++; } if(left==1) { for(j=0;j<b;j++) //左下 { block_a[(B_length*2-1)-(i-B_length)+1][a+j-1]=(B_length-a-j+1); // System.out.print("*i:"+i+" j:"+j+"*"); } } // System.out.println("/n i:"+i+" j:"+j); // block_a[i][j+1]=i; //画中间的一列 if(right==1) { for(j=1;j<=b;j++) //右下 { //int[] nowArr = block_a[i]; //System.out.println("arr.length*****"+nowArr.length); // System.out.println("B_length+j*****"+(B_length+j)); block_a[(B_length*2-1)-(i-B_length)+1][B_length+j-2]=j; //System.out.print("||i:"+i+" j:"+(B_length+j-1)+"|"); } } // System.out.println("/n i:"+i+" j:"+j); } } // } //============================================================= for(i=0;i<=B_length*2-1;i++) //显示 { for(j=0;j<=B_length*2-1;j++) { if(block_a[i][j]==0) System.out.print(" ");//符合block_a[i][j]=0的输出空格 else System.out.print(block_a[i][j]);//出了为0的输出该元素 } System.out.print("/n");//换行 } return; } /** * @param args */ public static void main(String[] args) {//主方法 args=new String[5];//定义一个有5个元素的String型数组 args[0]="5";//给数组第一个地址赋值"5" args[1]="left";//给数组第二个地址赋值"left" args[2]="right";//给数组第三个地址赋值"right" args[3]="up";//给数组第四个地址赋值"up" args[4]="down";//给数组第五个地址赋值"down" int left=0;//给整型变量left赋值0 int right=0;//给整型变量right赋值0 int up=0;//给整型变量up赋值0 int down=0;//给整型down赋值0 int B_length=0;//给整型变量B_length赋值0 int g=0;//给整型变量g赋值0,循环用 for(g=0;g<args.length;g++)//for循环,遍历args数组 { System.out.println(g+" = "+args[g]);//在控制台上输出args的每一个元素 } B_length=Integer.parseInt(args[0]);//将数组第一位"5"强制转换为Int型5,并赋给B_length for(g=1;g<args.length;g++)//从数组第二位开始遍历数组 { if(args[g].equals("left")){left=1;}//如果数组中有元素是"left",则给left赋值1 else if(args[g].equals("right")){right=1;}//如果数组中有元素是"right",则给right赋值1 else if(args[g].equals("up")){up=1;}//如果数组有元素是"up",则给up赋值1 else if(args[g].equals("down")){down=1;}//如果数组有元素是"down",则给down赋值1 } //System.out.println(B_length); //System.out.println(left); //System.out.println(right); //System.out.println(up); //System.out.println(down); //System.out.println(kk); crk nowTest = new crk();//创建新的对象,让static main可以调用其他方法 nowTest.block(B_length,left,right,up,down);//给block传进这些变量运算 } }