繁体   English   中英

用Java创建这种模式? (我的循环无效)

[英]Creating this pattern in Java? (My loop isn't working)

我正在尝试创建一个程序,该程序依赖于用户输入2到10之间的整数。

如果用户输入四个,则应为输出:

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

我希望输入4以在第一行中输出四颗星以形成水平边缘,然后输出四颗对角线。 然后沿着垂直的“边缘”四颗星,然后重复对角线和水平边缘。

因此,我可以正确地绘制第一行,最后一行和中间行,但是由于某种原因,我的对角线甚至不会显示空格!

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

这是我的代码(我是一个初学者,但是我一直在试图解决这个问题,我确实需要一些帮助):

    int num = 0;
    System.out.println("Enter a value between 2 and 10.");
    num = keyNum.nextInt();
    while (num < 2 || num > 10) {
        System.out.println("Enter a valid number please.");
        num = keyNum.nextInt();
    } 
    for (int a = 0; a < num + 1; a++) 
    {
        System.out.print(" ");
    }
    for (int b = 0; b < num; b++)
    {
        System.out.print("*");
    }
    for (int c = 0; c < num; c++)
    {
        System.out.println("");
        for (int d = num; d < 1; d--) 
        {
            System.out.print(" ");
        }
        System.out.print("*");
        for (int e = (num * 3) - 2; e < num; e++)
        {
            System.out.print(" ");
        }
        System.out.print("*");
    }
    for (int f = 0; f < num; f++)
    {
        System.out.println("");
        System.out.print("*");
        for (int g = 0; g < num * 3; g++)
        {
            System.out.print(" ");
        }
        System.out.print("*");
    }

    for (int h = 0; h < num; h++)
    {
        System.out.println("");
        for (int i = num; i < 1; i--) 
        {
            System.out.print(" ");
        }
        System.out.print("*");
        for (int j = (num * 3) - 2; j < num; j++)
        {
            System.out.print(" ");
        }
        System.out.print("*");
    }
    System.out.println("");
    for (int k = 0; k < num + 1; k++) 
    {
        System.out.print(" ");
    }
    for (int l = 0; l < num; l++)
    {
        System.out.print("*");
    }

任何帮助将不胜感激! 谢谢。

这应该工作只是改变了几个for循环条件

        while (num < 2 || num > 10) {
            System.out.println("Enter a valid number please.");
            num = keyNum.nextInt();
        }
        for (int a = 0; a < num + 1; a++)
        {
            System.out.print(" ");
        }
        for (int b = 0; b < num; b++)
        {
            System.out.print("*");
        }
        for (int c = 0; c < num; c++)
        {
            System.out.println("");
            for (int d = num; d > c; d--)
            {
                System.out.print(" ");
            }
            System.out.print("*");
            for (int e = num * 2; e < (num * 3) + (c *2);  e++)
            {
                System.out.print(" ");
            }
            System.out.print("*");
        }
        for (int f = 0; f < num; f++)
        {
            System.out.println("");
            System.out.print("*");
            for (int g = 0; g < num * 3; g++)
            {
                System.out.print(" ");
            }
            System.out.print("*");
        }

        for (int h = 1; h <= num; h++)
        {
            System.out.println("");
            for (int i = 0; i < h; i++)
            {
                System.out.print(" ");
            }
            System.out.print("*");
            for (int j = 0; j < (num * 3) - (h * 2) ; j++)
            {
                System.out.print(" ");
            }
            System.out.print("*");
        }
        System.out.println("");
        for (int k = 0; k < num + 1; k++)
        {
            System.out.print(" ");
        }
        for (int l = 0; l < num; l++)
        {
            System.out.print("*");
        }

暂无
暂无

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

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