Создание этого шаблона в Java?(Мой цикл не работает) - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь создать программу, которая зависит от ввода пользователя для целых чисел от 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("*");
    }

Любой видпомощь будет оценена!Спасибо.

1 Ответ

0 голосов
/ 19 октября 2018

Это должно работать. Просто изменил пару 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("*");
        }
...