首页 > 解决方案 > 无法在 Java 中获得类似金字塔的图像

问题描述

参考图像

上面是图像,我正在努力实现,我几乎接近逻辑但不完全存在,任何想法我错过了什么

class GFG  
{ 
static void printSierpinski(int n) 
{ 
    for (int y = n - 1; y >= 0; y--) { 

        // printing space till 
        // the value of y 
        for (int i = 0; i < y; i++) { 
            System.out.print(" "); 
        } 

        // printing '*' 
        for (int x = 0; x + y < n; x++) { 

            // printing '*' at the appropriate 
            // position is done by the and  
            // value of x and y wherever value 
            // is 0 we have printed '*' 
            if ((x & y) != 0) 
                System.out.print(" "
                                + " "); 
            else
                System.out.print("* "); 
        } 

        System.out.print("\n"); 
    } 
} 

// Driver code 
public static void main(String args[]) 
{ 
    int n = 16; 

    // Function calling 
    printSierpinski(n); 
} 

}

标签: java

解决方案


我在大约一个小时内创建了以下输出。我不会发布我的代码。我将解释我是如何解决这个问题的,希望 OP 和其他人能学到一些关于逻辑的东西。

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

我做的第一件事是编写一个创建字符串的方法。此方法将 char 和 int 长度作为参数。该方法的结果是空白字符串或星号字符串。当我创建星号字符串时,我在星号之间插入了空格。

一旦我使该方法起作用,我就打印了底线。然后我在底线之前打印了一行。在这一点上,我并不关心 for 循环或 while 循环或任何其他类型的水果循环。我想看看逻辑模式是什么。

在推断出模式之前,我打印了底部的 5 行。一旦我理解了逻辑,我就编写了 for 循环。好的,此时我已经完成了一半的金字塔。

在我理解上金字塔的逻辑之前,我打印了几行上金字塔。一旦我理解了逻辑,编写上金字塔 for 循环就很简单了。

完成代码后,我意识到我可以概括代码以创建具有任何宽度底的金字塔。这就是为什么我在这个答案的开头发布了 9 级金字塔。

我的故事的寓意是首先要理解逻辑,即使您必须编写一些丑陋的代码来帮助您理解。我是一位经验丰富的开发人员,我不得不进行一些实验来弄清楚逻辑。

一旦你理解了逻辑,那么你就可以编写漂亮的代码。


推荐阅读