package cn.wang.day05;
import java.util.Scanner;
/**
-
@author WangShiwu
2.输入一个数,输出正方形。 例如: 输入:4
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
*/
public class Demo练习2_02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入数值:”);
int n = sc.nextInt();
// 单独打印矩形数阵,传统方法,行数和字数个数为循环
/*int a = 0;//定义数初始的值为0;
for (int i = 1; i <= n; i++) {//一共有n行,进行n行的循环if (i % 2 != 0) {//判断是不是奇数行,是的话,进行以下语句 for (int j = 1; j <= n; j++) {//因为是正方形,所以n行n列 a++;//a从0开始自加打印出来 System.out.print(a + "\t");//输出定义的a的值 } } else {//这是偶数行,进行偶数行的操作 for (int j = n; j >= 1; j--) {//也是n列,但是由于值从大到小变化,所以调用了j的值 int b = a;//定义一个变量b,每次重新赋值,使得基数从a(a承继了上面的值)开始加,保持a不变 b += j;//承接上面的最大值加上本次循环数。 System.out.print(b + "\t");//打印输出循环体的数 } a += n;//将a赋值,返回奇数行,奇数行里a的值重新定义打印。 } System.out.println(); } System.out.println("=======================");*/ //法 2 直接使用推理公式 /*for(int i = 1;i <= n ;i++) { for(int j = 1; j <= n;j++) { if(i % 2 != 0) { System.out.print(j + (i - 1)*n + "\t"); }else { System.out.print(i*n - j + 1 + "\t"); } } System.out.println(); } */
//
// }
//}
/*
int a = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 != 0) {
for (int j = 1; j <= n; j++) {//输出行
a++;
System.out.print(a + “\t”);//奇数行
}
} else {
for (int j = n; j >= 1; j–) {
int b = a;
b += j;//将上一行最后一个数赋值给变量b,这样就保持了a不变
System.out.print(b + “\t”);//偶数行
}
a += n;//返回偶数行第一个数
}
System.out.println();
}*/
//
//法3 :这个方法是求出每行的最大值与最小值,找出规律,循环体打印
/变量a为倍数,从0 开始
int a = 0;
for (int i = 1; i <= n; i++) {
//如果是偶数行,就执行从大到小,依次输出。
if (i % 2 == 0) {
for (int j = n * i; j >= n * a + 1; j–) {
System.out.print(j + “\t”);
}
//如果是奇数行,就执行从小到大依次输出
} else {
for (int j = n * a + 1; j <= n * i; j++) {
System.out.print(j + “\t”);
}
}
//返回倍数加1 ,使得下个起始值承接上个数据。
a++;
System.out.println();
}
}
}/
//法4
for(int i = 1; i <= n; i++) {
if(i % 2 != 0) {
for(int j = n-1 ; j>= 0; j--)
System.out.print(n * i - j + "\t");
}else {
for(int j = 0;j<= n-1;j++) {
System.out.print(n * i - j + "\t");
}
}
System.out.println();
}
sc.close();
}
}