• Java打印M图形(二维数组)——(九)


    对于平面图形输出集合图形与数字组合的,用二维数组。先在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 }

    测试:

  • 相关阅读:
    【01】markdown语法
    H5系列之地理位置(必知必会)
    【07】像使用命令行一样使用 GitHub URL
    【11】把 GitHub 当 CMS 用
    【01】在 issue 中创建 list
    【06】GitHub WiKi
    【05】project board
    7.10-11 visudo、sudo
    7.7-9 chage、chpasswd、su
    7.1 useradd:创建用户
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7277184.html
Copyright © 2020-2023  润新知