java螺旋填数三角形_有关JAVA.方阵的主对角线之上称为“上三角”。请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充...

我做了一个小时,终于大功告成啊!有成就感,上代码

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();

}

}

强烈建议楼主采纳最佳答案哟!可以看一下效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值