我做了一个小时,终于大功告成啊!有成就感,上代码
import java.util.Scanner;
public class Trangle {
public Trangle(){
System.out.println("请输入数字3--20");
Scanner sc=new Scanner(System.in);
int input=sc.nextInt();
if(input<3||input>20){
System.out.println("数字范围错误");
return;
}
//定义矩阵
int[][] matrix=new int[input][input];
//初始化矩阵为-1,后面用于输出判断
for(int i=0;i
for(int j=0;j
matrix[i][j]=-1;
}
}
//三角形的三条边,横着斜着竖着
int status=1;
//三角型循环的次数
int time=0;
//当前的数字
int index=1;
//我们知道这个三角矩阵是有一个一个大小不同的三角形
//组成的,1234,567,89.他们的长度是递减的,线面循环的i即表示边长
for(int i=input;i>0;i--){
//表示横着的边
if(status==1){
//在每个相应的坐标上把当前数字index写进去
for(int j=0;j
matrix[time][time+j]=index;
index++;
}
status=2;
}else if(status==2){//斜着的边
for(int j=0;j
matrix[time+1+j][input-2-time*2-j]=index;
index++;
}
status=3;
}else if(status==3){//竖着的边
for(int j=0;j
matrix[input-2-time*2-j][time]=index;
index++;
}
status=1;
time++;//表示从外到内三角形的个数
}
}
//输出我们处理好的这个矩阵
for(int i=0;i
for(int j=0;j
//是-1的地方就不要输出了
if(matrix[i][j]==-1){
break;
}
if(matrix[i][j]<10){
System.out.print(matrix[i][j]+" ");
}else if(matrix[i][j]<100){
System.out.print(matrix[i][j]+" ");
}else{
System.out.print(matrix[i][j]+" ");
}
}
System.out.println("");
}
}
public static void main(String[] args){
new Trangle();
}
}
强烈建议楼主采纳最佳答案哟!可以看一下效果图