欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 输入一个正整数,按蛇形打印。

程序员文章站 2022-04-14 17:03:52
参考博客: http://yangyingming.com/article/371/ ......

参考博客:    http://yangyingming.com/article/371/

 1 //输入一个正整数n(n<=30),输出n所对应的蛇形矩阵。举两个例子:
 2 //n=10时,蛇形矩阵为: 
 3 //具体的蛇形矩阵变化路径见下图:
 4 // 
 5 //
 6 //
 7 
 8 import java.util.scanner;
 9 public class testshexin {
10 
11     /**
12      * @param args
13      */
14     public static scanner sc = new scanner(system.in);
15     public static void main(string[] args) {
16         // todo auto-generated method stub
17         
18         system.out.println("输入一个不大于30的正整数");
19         int num=0;
20         try{
21              num = sc.nextint();    
22         }catch(exception e){
23             e.printstacktrace();
24         }
25         print(num);
26         
27         
28 
29     }
30     
31     private static int [][] creatary(int num ){
32         int temp = num , rowid = 0 , colid = 0 ;
33         int xcot = 1 ;//斜角长度
34         int count =0;//当前斜角已有长度;
35         int bol = 1;// 1 表示当前应该横走,-1表示应该竖着走
36         
37         int [][] ina = new int [10][10];
38         while(temp>0){
39             
40             ina[rowid][colid]=temp; 
41             count++;
42             if(count >= xcot){//该换行了(斜行)
43                 xcot++;
44                 count=0;
45                 if(bol==1){
46                     colid++;
47                     bol=-bol;
48                 }else{
49                     rowid++;
50                     bol=-bol;
51                 }
52             }else{             //不需要换行(斜行)
53                 //上次换行后 bol 已经取反,故bol=-1表示此时向斜下走,bol=1 同理;
54                 if(bol==-1){
55                     rowid++;
56                     colid--;
57                 }else{
58                     rowid--;
59                     colid++;
60                 }
61                 
62             }
63             
64             temp--;
65         
66         }
67         return ina;
68     }
69     public static void print (int num){
70         int [][] ia= creatary(num); 
71         for(int i =0;i <ia.length;i++ ){
72             for(int j =0 ; j<ia.length; j++){
73                 if(ia[i][j]!=0){
74                     system.out.print(ia[i][j]+" ");
75                 }
76             }
77             system.out.println();
78         }
79     }
80 }