如何让我的程序为某些值打印完整的直角三角形?

时间:2018-09-25 05:06:32

标签: java loops if-statement triangle-count

enter image description here

我用88进行了测试,结果只剩下一颗星星就完成了三角形。 87,两颗星86三颗星。这种情况持续了一定数量。

这是用于编程generate函数的两个选项

•一种方法是计算最后一行的长度,例如maxLen,然后使用double for循环生成一行一颗恒星,一行两颗恒星,一行三颗起点,以及依此类推,以maxLen星的行结尾。 maxLen的值是大于或等于 二次方程x ( x + 1 ) = 2 * num.

的较大解

•另一种方法是在需要换行符的地方执行System.out.println()时,使用一个for循环打印num星。可以使用两个随附的整数变量lencount来计算需要换行的点。在这里,前者是要生成的行的长度,count是行中尚未打印的星星数。我们首先将两个整数变量的值都设置为1。在迭代的每一轮,我们减小count的值,如果count的值变为0,则插入换行符,增大len的值,然后复制{{1 }}到len当循环终止时,如果count的值既不等于0也不等于count,则通过添加更多的星号来扩展当前行。

count

4 个答案:

答案 0 :(得分:1)

Try this:-   

  public static void generate(int x) //Generates the Triangle
            {
            int len, count;
            len = 1;
            count = 1;
            for (int k = 1; k <= x; k++)
            {

                for (int i = 1; i <= k; i++) {
                    System.out.print("*");
                }
                System.out.println();


            }

            }

答案 1 :(得分:1)

诀窍是增加内循环中已打印星星的数量c,该数量将打印每一行,但要与外循环中所需的数量n进行比较,以决定多少行打印。这样,我们可以确保打印完整的行,但是只要打印了至少n个星号,我们就会停止。

public static void generate(int n)
{
  for(int c=0, i=0; c<n; i++)
  {
    for(int j=0; j<=i; j++, c++)
      System.out.print('*');
    System.out.println();
  }
}

答案 2 :(得分:0)

尝试一下!

public class pyramid {
public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    System.out.println("Input Length of pyramid : ");
    int length = s.nextInt();

    for (int i = 1; i <= length; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print("*\t");
        }
        System.out.println("\n");
    }
}

答案 3 :(得分:0)

检查一下:

public static void generate(int x) //Generates the Triangle
{
    int len, count;
    len = 1;
    count = 1;
    for (int k = 1; k <= x;)
    {
        System.out.print("*");

        count --;

        if (count == 0)
        {
            System.out.println();
            len ++;
            k++;
            count = len;
        }
}