Как мне позволить моей программе напечатать полный прямоугольный треугольник для определенных значений? - PullRequest
0 голосов
/ 25 сентября 2018

enter image description here

Я проверил программу с 88, и у нее осталась одна звезда, чтобы завершить треугольник.87, две звезды 86 три звезды.Это продолжалось для определенных чисел.

Это две опции для программирования generate function

• Один из них - вычислить длину последней строки, скажем, maxLen, и использоватьдвойной цикл for для создания линии из одной звезды, линии из двух звезд, линии из трех стартов и т. д., заканчивающейся линией maxLen звезд.Значение maxLen - это наименьшее целое число, которое больше или равно большему решению квадратного уравнения x ( x + 1 ) = 2 * num.

• Другой - использовать один цикл for для печати num звезд при выполнении System.out.println()везде, где нужен перевод строки.Точка, в которой необходим символ новой строки, может быть вычислена с использованием двух сопровождающих целочисленных переменных, например, len и count.Здесь первая - это длина создаваемой линии, а count - это количество звезд, которые еще должны быть напечатаны в строке.Мы начнем с установки значения 1 для обеих целочисленных переменных.В каждом раунде итерации мы уменьшаем значение count, если значение count становится равным 0, мы вставляем новую строку, увеличиваем значение len, а затем копируем значение len до count, Когда цикл завершается, если значение count не равно ни 0, ни количеству, мы расширяем текущую строку, добавляя больше звездочек.

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

Ответы [ 4 ]

0 голосов
/ 25 сентября 2018

Хитрость заключается в увеличении числа 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();
  }
}
0 голосов
/ 25 сентября 2018

Попробуйте это !!!

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");
    }
}
0 голосов
/ 25 сентября 2018

Проверьте это:

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;
        }
}
0 голосов
/ 25 сентября 2018
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();


            }

            }
...