如何在java中修改这个星型代码以获得我想要的输出?

时间:2018-04-08 09:07:12

标签: java

我想要打印这种模式

*
**
*****

但输出显示如下

*
**
***

如何修改此代码以获取我想要的输出if if loop中应该包含哪些条件?

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();
        }
    }
}

2 个答案:

答案 0 :(得分: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 - 1) * 2 + 1

i             repeat 
1             1
2             2
3             5

答案 1 :(得分: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