/*需求:打印出输入4时输出
0000
0111
0122
0123
输入1~n时打印出来。用数组的方法。
通过分析可以看出这个数列就是两个三角形组成。一个是
0
01
012
0123
第n行为n个数,分别为0~n
另一个三角形为
000
11
2
为一个相同的倒三角,并且行数和列数为输入数-1
按照以前写三角形的方法可以写出下面的代码。
class SJX
{
public static void main(String[] args)
{
int n=4;
int[][] arr = new int[n][n];
for(int x = 0; x < n ;x++)
{
for(int y = 0; y <= x; y++)
{
arr[x][y] = y; //把三角形的数传递个数组
}
for(int y1 = x ; y1 < n ; y1++)
{
arr[x][y1] = x; //把倒三角的数传递给数组
}
}
for(int x2 = 0; x2 < n ;x2++)
{
for(int y2 = 0; y2 <n; y2++)
{
System.out.print(arr[x2][y2]); //打印出数组
}
System.out.println(); //换行功能
}
}
}
但是经过提示有一种方法就是通过if判断来写。
发现:0
01
012
0123
在m行n列的时候,如果m>n是递增并且arr[m][n]=n-1。
如果m<n是相同的并且arr[m][n]=n-1
所以代码更简洁更好写。
*/
class SJX
{
public static void main(String[] args)
{
int n = 4;
int[][] arr = new int[n][n];
for(int x = 0 ; x < n ; x ++)
{
for(int y = 0 ; y < n ; y ++)
{
if( x >= y )
{
arr[x][y] = y;
}
else
arr[x][y] = x;
}
}
dY(arr);
}
public static void dY(int[][] a) //把打印数组封装成一个方法
{
int n = a.length;
for(int x = 0; x < n ;x++)
{
for(int y = 0; y < n; y++)
{
System.out.print(a[x][y]); //打印出数组
}
System.out.println(); //换行功能
}
}
}
/*
经测试当输入9时,打印结果如下。正确打印。
D:\Java0224\新建文件夹>javac SJX.java
D:\Java0224\新建文件夹>java SJX
000000000
011111111
012222222
012333333
012344444
012345555
012345666
012345677
012345678
D:\Java0224\新建文件夹>
*/