Я проверил программу с 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**
}