java - 用 Java 创建这个模式? (我的循环不起作用)

标签 java loops for-loop while-loop

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

如果用户输入了 4,则输出应该是:

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

我想要输入 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("*");
        }

关于java - 用 Java 创建这个模式? (我的循环不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52883913/

相关文章:

java - 位移乘法循环

java - API针对不同场景返回不同的Object类型

java - Sonar 成功执行,未报告代码覆盖率

c++ - 素数计算器C++

java - 为什么 FPS 不打印在我的窗口中?

c++ - 你应该为 std::unordered_map 迭代器使用引用吗?

java - EclipseLink 中具有动态实体的序列

java - 行走动画

Python - 有没有办法将 "as"别名添加到 for 循环?

java - 嵌套 for 循环给出意想不到的结果