杨辉三角:
public static void printYangHui(int x) {
//准备两个数组备用 使用Arraylist不用操心容量问题
ArrayList<Integer> newLine=new ArrayList<>();
ArrayList<Integer> oldLine=new ArrayList<>();
int n=1;
while(n<x+1) {
//打印空格 使其成三角
for(int i=0;i<x-n;i++) {
System.out.print(" ");
}
//前两行不需要特殊操作
if(n==1||n==2) {
oldLine.add(1);
printArr(oldLine);//打印数据行 (此方法是为了美观重写的)
}else {
//新行首尾 添加1
newLine.add(1);
//新行中间 获取 上一行两个数据和
for(int i=1;i<oldLine.size();i++) {
int a=oldLine.get(i-1)+oldLine.get(i);
newLine.add(a);
}
newLine.add(1);
printArr(newLine);//打印新行数据
//newLine转移数据到oldLine 为下一行打印做准备
oldLine.clear();
for (Integer integer : newLine) {
oldLine.add(integer);
}
newLine.clear();
}
n++;
}//while
}
重新写了个打印数组的方法,更美观些:
//打印数组
public static void printArr(ArrayList<Integer> list) {
for(int i=0;i<list.size();i++) {
if(list.get(i)>=10)
System.out.print(list.get(i)+" ");
else
System.out.print(list.get(i)+" ");
}
System.out.println();
}
打印成果(复制到此文本编辑器拉 形状被拉长了些):
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1