【问题标题】:How do I let my program print a complete right angle triangle for certain values?如何让我的程序为某些值打印一个完整的直角三角形?
【发布时间】:2018-09-25 05:06:31
【问题描述】:

我用 88 对程序进行了测试,剩下一颗星来完成三角形。 87,两颗星 86 三颗星。这种情况持续了某些数字。

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

• 一种是计算最后一行的长度,例如maxLen,并使用双 for 循环生成一行一星、一行两星、一行三开始,等等,以maxLen 星号结尾。 maxLen 的值是大于或等于 二次方程的更大解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**
                }

【问题讨论】:

  • 你需要两个嵌套循环。行的外循环。连续星星的内循环。计算星星打印。如果打印的总星数 >= 请求的星数,则退出外循环。

标签: java loops if-statement triangle-count


【解决方案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();


            }

            }

【讨论】:

  • 它有效,但我们给出了特定的指示。让我添加它们
【解决方案2】:

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

【讨论】:

  • 我知道这可能有效,但对于 Java 中的新用户,OP 显然是这样,我认为你不应该像你一样在每个部分使用带有多个语句的 for 循环int c = 0, i = 0。此外,这绝对可以用少于 4 个变量和更好命名的变量来完成。请编辑此内容。
【解决方案3】:

试试这个!!!

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

【讨论】:

  • 很好的解决方案,但我只是添加了我们得到的特定说明
【解决方案4】:

看看这个:

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

【讨论】:

    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多