package cn;
import java.util.Scanner;
public class draw {
public static void main(String[] args) {
show();
}
static void show(){
int num ;
System.out.print("输入要排列的数:");
Scanner input = new Scanner(System.in);
num = input.nextInt();
int a = 1;
int height = num/4 + 1;
int width = num;
String tab = "";
int arr[][] = new int[height][width];
int x = height -1;
int y = 0;
boolean flag = false;
int num1 = num/10;
while(num1%10 != 0){
a++;
num1 = num1/10;
}
for(int i =1;i<= a;i++){
tab =tab + " ";
}
for(int i =1;i<= num;i++){
arr[x][y] = i;
y++;
if(!flag){
x--;
}
if(flag){
x++;
}
if(x<0){
flag = true;
x = x + 2;
}
if(x>height -1){
flag = false;
x = x -2;
}
}
for(int i =0;i< arr.length;i++){
for(int j =0;j<arr[i].length;j++){
if(arr[i][j] != 0){
if(a==1){
System.out.format("%1s", arr[i][j]);
}else if(a ==2){
System.out.format("%2s", arr[i][j]);
}//else if(a == 3){
//System.out.format("%3s", arr[i][j]);
//}
}else{
System.out.print(tab);
}
}
System.out.println();
}
}
}
程序的通用性不强,只能输出小于100的数,要是想打印更高位数的还得改程序。期待有更好的解决办法。