近期重新翻看Java书本,发现一个好玩的程序。
看网上的好多都是,把这些数存在数组里面,然后再通过循环提取出来,这样太糙了。
下面是我的代码:
import java.util.Scanner;
/*** @author NEOSONG
* @date Sep 25, 2017
* 9:03:06 PM
* information :
* 输出
* 1 3 6 10 15
* 2 5 9 14
* 4 8 13
* 7 12
* 11
*
核心代码
Scanner reader=new Scanner(System.in);
System.out.println("请输入行数:");
int n=reader.nextInt();
int key=2; //定义行差值key,初始值为2
int num=0; //保存数据,初始值为0
int num_row=1; //定义num_row来记录行数,初始值为1
int num_first=1; //定义num_first,用与表示每行的第一个数
int num_y=1; //定义num_y,用于表示第一列数之间的差值,初始值为1
for(int i=n;i>=1;i--){ //n行数
num=num_first; //循环开始,重新定义num
key=num_row+1; //通过观察发现,每行开始时,第一个差值是行数+1
for(int j=1;j<=i;j++){ //用于控制每行输出的个数
System.out.print(num+" ");
num+=key;
key++; //差值自增
}
System.out.println();
num_row++; //输出完一行之后,num_row自增
num_first+=num_y; //num_first变化
num_y++; //列差值变化
}
通过这一个小程序,也是明白了编程不可急躁,要细心的分析问题,然后想办法解决问题。