1. 程式人生 > >Java打印M圖形(二維數組)——(九)

Java打印M圖形(二維數組)——(九)

ofa rdf knx vba kit seh adg bgm fad

對於平面圖形輸出集合圖形與數字組合的,用二維數組。先在Excel表格中分析一下,找到簡單的規律。二維數組的行數為行高,列數為最後一個數大小。

對於減小再增大再減小再增大的,可以用一個boolean標誌其是增加還是減小狀態,減到最小時將其標誌設為相反的並改變這時的初值大小。

效果:

技術分享

Excel中分析

技術分享

Java代碼:

 1 package Java_Test;
 2 
 3 public class PrintM {
 4 
 5     /*
 6      
 7         3     7
 8        2  4  6  8
 9       1    5      9
10 平面圖形(二維數組) 11 12 */ 13 public static void main(String[] args) { 14 15 int atr[][]=new int[3][9]; 16 // 產生9個數,放入對應位置 17 boolean flag=false; //false代表橫坐標在減小,true代表在增大 18 // 初始位置 19 int x=2; 20 int y=0; 21 for(int i=1;i<=9;i++){
22 23 // 放入第一個數 24 atr[x][y]=i; 25 // y始終在增大 26 y++; 27 28 if(!flag){ //如果x在減小讓其自減 29 x--; 30 } 31 32 if(flag){ 33 x++; 34 } 35 36 if
(x<0){ //x減到0,再減為-1 37 flag=true; 38 x=x+2; 39 } 40 41 if(x>2){ //x加2,再加為3 42 flag=false; 43 x=x-2; 44 } 45 } 46 47 48 for(int i=0;i<3;i++){ 49 for(int j =0;j<9;j++){ 50 if(atr[i][j]==0){ 51 System.out.print(" "); 52 }else{ 53 System.out.print(atr[i][j]); 54 } 55 } 56 System.out.println(); 57 } 58 59 60 61 } 62 }

測試:

技術分享

-------------------------------------------------------輸入n個數輸出M的改造--------------------------------

 1 package Java_Test;
 2 
 3 import org.junit.Test;
 4 
 5 public class PrintM_duogeshu {
 6 
 7     /*
 8      * 
 9      * 3 7 2 4 6 8 1 5 9 平面圖形(二維數組)
10      * 
11      */
12     public static void test1(int num) {
13 
14         int height = (num / 4) + 1; // 4條邊
15 
16         int atr[][] = new int[height][num];
17         // 產生9個數,放入對應位置
18         boolean flag = false; // false代表橫坐標在減小,true代表在增大
19         // 初始位置
20         int x = height-1;
21         int y = 0;
22         for (int i = 1; i <= num; i++) {
23 
24             // 放入第一個數
25             atr[x][y] = i;
26             // y始終在增大
27             y++;
28 
29             if (!flag) { // 如果x在減小讓其自減
30                 x--;
31             }
32 
33             if (flag) {
34                 x++;
35             }
36 
37             if (x < 0) { // x減到0,再減為-1
38                 flag = true;
39                 x = x + 2;
40             }
41 
42             if (x > height-1) { // x加2,再加為3
43                 flag = false;
44                 x = x - 2;
45             }
46         }
47 
48         for (int i = 0; i < atr.length; i++) {
49             for (int j = 0; j < atr[i].length; j++) {
50                 if (atr[i][j] == 0) {
51                     System.out.print(" ");
52                 } else {
53                     System.out.print(atr[i][j]);
54                 }
55             }
56             System.out.println();
57         }
58 
59     }
60     
61     @Test
62     public void test(){
63         PrintM_duogeshu.test1(13);
64     }
65 }

測試:

技術分享

Java打印M圖形(二維數組)——(九)