Как мне позволить моей программе напечатать полный прямоугольный треугольник для определенных значений?
Я протестировал программу с 88, и для завершения треугольника осталась одна звезда. 87, две звезды 86 три звезды. Это продолжалось для определенных чисел.
Это два варианта программирования generate
функция
• Один из них - вычислить длину последней строки, скажем, 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, ни равен 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**
}
4 ответа
Хитрость в том, чтобы увеличить счет 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();
}
}
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();
}
}
Попробуйте это!!!
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;
}
}