繁体   English   中英

使用 Jagged Array 打印图案

[英]Printing pattern using Jagged Array

给定锯齿状数组,我们被要求使用循环语句来显示基于 position 的字符。如果 position 匹配则显示“*”,否则显示“”。

        int arr [][] = {{0,4,8,12,13,14,15,18,19,20,21,24,28},
       {0,4,7,9,12,16,18,22,25,27},
       {0,1,2,3,4,6,10,12,16,18,22,26},
       {0,4,6,10,12,13,14,15,18,19,20,21,26},
       {0,4,6,7,8,9,10,12,18,26},
       {0,4,6,10,12,18,26}};
       

我已经创建了一个程序,但是 output 不是我所期望的,我现在卡住了。

      for (int i = 0; i < arr.length; i++)
      {
          for (int j = 0; j < arr[i].length - 1; j++)
          {
              for (int spaces = 1; spaces < arr[i][j + 1]-arr[i][j]; spaces++)
              {
               System.out.print(" ");
              }
              System.out.print("*");
          }
          System.out.println();
      }

output 应该是 Happy,但我得到:在此处输入图片描述

这是因为您的程序没有将第一个j值(即 0)与自身进行比较。 由于每个值都等于自身,因此您可以像这样为每一行手动添加*

int arr [][] = {{0,4,8,12,13,14,15,18,19,20,21,24,28},
               {0,4,7,9,12,16,18,22,25,27},
               {0,1,2,3,4,6,10,12,16,18,22,26},
               {0,4,6,10,12,13,14,15,18,19,20,21,26},
               {0,4,6,7,8,9,10,12,18,26},
               {0,4,6,10,12,18,26}};
     
     
     for (int i = 0; i < arr.length; i++)
     {
         System.out.print("*");
         
         for (int j = 0; j < arr[i].length - 1; j++)
         {
             for (int spaces = 1; spaces < arr[i][j + 1]-arr[i][j]; spaces++)
             {
              System.out.print(" ");
             }
             System.out.print("*");
         }
         System.out.println();
     }

尝试这个。

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0, p = -1; j < arr[i].length; p = arr[i][j++])
            System.out.print(" ".repeat(arr[i][j] - p - 1) + "*");
        System.out.println();
    }

output:

*   *   *   ****  ****  *   *
*   *  * *  *   * *   *  * *
***** *   * *   * *   *   *
*   * *   * ****  ****    *
*   * ***** *     *       *
*   * *   * *     *       *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM