Попытка создать цикл, который выводит рисунок пирамиды из звезд и подчеркиваний на основе ввода пользователя - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь сделать так, чтобы пользователь вводил нечетное количество звезд в нижнем ряду пирамиды. Программа построит эту пирамиду, используя только нечетные целые числа меньше, чем один вход. На внешней стороне пирамиды находятся подчеркивания.

String result = "";
int sideWidth = -1, midWidth = -1;
for (int i=1; i<=numSymbols ; i++) 
{ 
    for (int j=numSymbols; j>i; j--)
    {
        System.out.print("_");
    }
    for (int k=1; k<=(i * 2) -1; k++)
    {
        System.out.print("*");
    }
    System.out.println();
}
return result;

Ожидаемый результат, если пользователь введет 7:

___*___
__***__
_*****_
*******

Что я на самом деле получу, если пользователь введет 7:

______*
_____***
____*****
___*******
__*********
_***********
*************

1 Ответ

0 голосов
/ 05 октября 2019

Вам нужно использовать numSymbols / 2 + 1 вместо numSymbols, поскольку вам нужно 4 строки только для 7 numSymbols. Кроме того, цикл _ должен быть таким j = numSymbols / 2; j >= i и повторяться дважды;один перед звездами и один после них. Наконец, вам не нужно использовать 'k'.

for (int i = 1; i <= numSymbols / 2 + 1; i++) 
{ 
    for (int j = numSymbols / 2; j >= i; j--)
    {
        System.out.print("_");
    }
    for (int j = 1; j <= i * 2 - 1; j++)
    {
       System.out.print("*");
    }
    for (int j = numSymbols / 2; j >= i; j--)
    {
        System.out.print("_");
    }
    System.out.println();
}

Для более простой формы:

for (int i = 1; i <= numSymbols; i += 2) 
{ 
    for (int j = numSymbols / 2; j >= i / 2; j--)
        System.out.print("_");
    for (int j = 1; j <= i; j++)
       System.out.print("*");
    for (int j = numSymbols / 2; j >= i / 2; j--)
        System.out.print("_");
    System.out.println();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...