我用 88 对程序进行了测试,剩下一颗星来完成三角形。87,两颗星 86 三颗星。这种情况持续了某些数字。
这是编程generate
功能的两个选项
• 一种是计算最后一行的长度,例如maxLen
,并使用双 for 循环生成一行一个星、一行两星、一行三开始等,以一行结束maxLen
星星。maxLen 的值是大于等于二次方程较大解的最小整数x ( x + 1 ) = 2 * num.
System.out.println()
• 另一种是在需要换行符的地方执行时,使用一个for 循环打印num stars 。需要换行符的点可以使用两个伴随的整数变量来计算,比如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**
}