繁体   English   中英

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

[英]How do I let my program print a complete right angle triangle for certain values?

在此处输入图片说明

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

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

•一种是计算最后一行的长度,例如maxLen ,并使用double for循环生成一行一颗星,一行两颗星,一行三开始,依此类推,以一行结尾maxLen星。 maxLen的值是大于或等于二次方程x ( x + 1 ) = 2 * num.的较大解的最小整数x ( x + 1 ) = 2 * num.

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

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

                count --;

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



        }

        if (count!= 0 || count != len)
                {

            System.out.println("*"); //Completes the triangle if needed
                                       // This is the **problem spot**
                }
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();


            }

            }

诀窍是增加内循环中已打印星的计数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();
  }
}

试试这个!

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

看一下这个 :

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM