设输出5行的图像如下,要求:根据用户输入的行数,自动得出以下图形,
80 48 28 16 1
32 20 12 3 4
12 8 5 8 12
4 7 12 20 32
9 16 28 48 80
java代码如下:
import java.util.HashMap;
import java.util.Map;
//若非第一行,则需要计算出,该数组的数据
//计算方法如下:
//上一行数据加下一行数据
//遍历上一个数组,加上当前数组某位数据,组成当前数组下一个数据
/*如
* 1
* 3 4
* 5 8 12
* 7 12 20 32
* 等差数列:n*2-1
*/
public class printNum {
public static void main(String args[]) {
Map<Integer,int[]> nums=new HashMap();
for(int i=0;i<5;i++) {
//定义第i行数组长度
int []a=new int[i+1];
a[0]=(i+1)*2-1;
if(i>0) {
int []lastNum=nums.get(i-1);
for(int z=1;z<=lastNum.length;z++) {
a[z]=lastNum[z-1]+a[z-1];
}
}
nums.put(i,a);
}
//由上面数据进行打印输出
for(int i=0;i<nums.size();i++) {
//打印空格
for(int z=0;z<=i-1;z++) {
System.out.print("\t");
}
//打印倒序数组
int dx[]=nums.get(nums.size()-(i+1));
for(int rs=dx.length-1;rs>0;rs--) {
System.out.print(dx[rs]+"\t");
}
//打印正序数组
int zx[]=nums.get(i);
for(int rs:zx) {
System.out.print(rs+"\t");
}
System.out.print('\n');
}
}
}