带有星号的Java Half Diamond(for循环)

时间:2015-02-14 20:35:29

标签: java asterisk

嘿我在java中绘制半钻石时遇到了嵌套for循环的问题 我需要获取用户输入并使用用户在此处指定的行数为半代钻石是我的代码

public static void diamond(int rows) {
      int m, n;
    for (m = 1; m <= rows; m += 2)
    {
        for (n = 1; n <= m; n++)
        {

            System.out.print("*");
        }
        System.out.println();
    }
  for (int i = rows; i > 0; i -= 2) {

        for (int j = 0; j < i; j++) {

            System.out.print("*");
        }
        System.out.println("");
    }
}

表示预期与实际输出的图像

enter image description here

4 个答案:

答案 0 :(得分:1)

这是一个逻辑错误。检查你的代码:

假设他们输入5作为行数。

第一个for循环然后循环,从m=1,开始,然后是3,然后是5.嵌套的for循环也很好 - 它只是绘制'*'的次数等于价值m。

然而,输入是5,对吗?第二个用于循环设置i = rows,,因此i将开始等于5.您已经在第一个for循环中绘制了最长的行,即其中包含5个星号的行。现在,由于您正在设置i = 5,,因此您将绘制另一行,其中包含5个星号。您想要的第二个for循环是:

for(int i = rows - 2; i > 0; i-=2){ ...

这样第二个for循环不再绘制最长的行 ,因为第一个for循环已经完成了。

答案 1 :(得分:0)

这可能会有所帮助

import java.util.Scanner;

public class HalfDiamond
{
    public static void main(String[] args) 
    {
        int n;
        Scanner obj=new Scanner(System.in);
        System.out.print("Enter the number of Rows:");
        n=obj.nextInt();
        for(int i=1;i<=n;i=i+2)
        {
            for(int j=1;j<=i;j++)
            {
                if(i%2==1)
                    System.out.print("*");
            }
            System.out.println();
        }
        for(int i=n-2;i>=1;i=i-2)
        {
            for(int j=1;j<=i;j++)
            {
                if(i%2==1)
                    System.out.print("*");
            }
            System.out.println();
        }
    }
}

答案 2 :(得分:-1)

这应该会帮助你找到最好的答案/例子......看看吧。它拥有制作半钻石指向所需的一切。

window_size = Bandwidth x RTT

} }

答案 3 :(得分:-1)

这可能会对你有帮助。

for(int i = 0;i<5;i++) {
    for(int j= 0;j<i;j++) {
        System.out.print("*");
    }
    System.out.println("");
}

for(int i = 5;i>0;i--) {
    for(int j=0;j<i;j++) {
        System.out.print("*");
    }
    System.out.println("");
}