Как изменить этот код шаблона звезды в java, чтобы получить желаемый результат?

avatar
Abhishek Kumar
8 апреля 2018 в 09:07
56
2
0

я хочу напечатать этот шаблон

*
**
*****

но вывод выглядит так

*
**
***

как изменить этот код, чтобы получить желаемый результат, какое условие должно быть включено в цикл if?

public class Star {
    public static void main(String[] args) {
        int i,j;

        for(i=1;i<=3;i++)
        {
            for(j=1;j<=5;j++)
            {
                if(j<=i)
                {
                    System.out.print("*");
                }
                else
                {
                    System.out.print(" ");
                }

            }

            System.out.println();
        }
    }
}
Источник
Paco Abato
8 апреля 2018 в 09:11
1

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

YCF_L
8 апреля 2018 в 09:13
0

какая логика между 1, 2, 5? ты имеешь в виду эту последовательность? math.stackexchange.com/questions/872485/…

Abhishek Kumar
8 апреля 2018 в 09:23
0

я использовал его для количества столбцов, чтобы напечатать 5 звезд в третьей строке

Ответы (2)

avatar
YCF_L
8 апреля 2018 в 09:25
0

Если я понимаю вашу последовательность, вы можете просто использовать :

for (int i = 1; i <= 3; i++) {
    System.out.println(String.join("",
            Collections.nCopies(i % 2 == 0 ? i : (i - 1) * 2 + 1, "*"))
    );
}

Выходы

*
**
*****

Это означает:

i % 2 == 0 ? i : (i - 1) * 2 + 1

Если i нечетное, то повторите звезду i раз, иначе повторите ее (i - 1) * 2 + 1

i             repeat 
1             1
2             2
3             5
avatar
Pradnya Bolli
10 мая 2019 в 06:05
0

Попробуйте этот код:-

for(int i=1;i<=3;i++)
    {
        for(int j=1;j<=i*i+1;j++)
        {
            if(j==1){

                System.out.print("*");
                System.out.println();
            }
            else if(j%2==1) {
                System.out.print("*");
                //System.out.println();
            } else {
                System.out.print("*");
            }
        }

используя оператор mod, вы можете получить правильный вывод. В Java есть один важный арифметический оператор, с которым вы, возможно, не знакомы, %, также известный как оператор модуля или остатка. Оператор % возвращает остаток от двух чисел. Например, 10 % 3 равно 1, потому что 10, разделенное на 3, дает остаток 1. Вы можете использовать % так же, как любой другой более распространенный оператор, такой как + или -.

Вывод:-

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

Итерация:-

i        j(repeat)
1        1
2        2
3        3