[英]How do I let my program print a complete right angle triangle for certain values?
我用88进行了测试,结果只剩下一颗星星就完成了三角形。 87,两颗星86三颗星。 这种情况持续了一定的时间。
这是编程generate
函数的两个选项
•一种是计算最后一行的长度,例如maxLen
,并使用double for循环生成一行一颗星,一行两颗星,一行三开始,依此类推,以一行结尾maxLen
星。 maxLen的值是大于或等于二次方程x ( x + 1 ) = 2 * num.
的较大解的最小整数x ( x + 1 ) = 2 * num.
•另一种方法是在需要换行符的地方执行System.out.println()
时,使用一个for循环打印num星。 可以使用两个伴随的整数变量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**
}
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();
}
}
诀窍是增加内循环中已打印星的计数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();
}
}
试试这个!
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.