如何让我的程序为某些值打印一个完整的直角三角形?
How do I let my program print a complete right angle triangle for certain values?
我用 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
的值,然后复制[=16的值=] 到 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();
}
}
试试这个 !!!
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;
}
}
诀窍是在内循环中增加打印星星的计数 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();
}
}
我用 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
的值,然后复制[=16的值=] 到 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();
}
}
试试这个 !!!
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;
}
}
诀窍是在内循环中增加打印星星的计数 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();
}
}