在 Java 中使用循环绘制等腰三角形
Posted
技术标签:
【中文标题】在 Java 中使用循环绘制等腰三角形【英文标题】:Drawing Isosceles Triangle in Java Using Loops 【发布时间】:2016-02-21 17:33:17 【问题描述】:这就是问题所在: 创建一个 IsoTri 应用程序,提示用户输入等腰三角形的大小,然后显示具有那么多线条的三角形。
示例:4
*
**
***
****
***
**
*
IsoTri 应用程序代码应包含printChar(int n, char ch)
方法。此方法会将 ch 打印到屏幕 n 次。
这是我目前所拥有的:
public static void main(String[] args)
int n = getInt("Give a number: ");
char c = '*';
printChar(n, c);
public static int getInt(String prompt)
int input;
System.out.print(prompt);
input = console.nextInt();
return input;
public static void printChar(int n, char c)
for (int i = n; i > 0; i--)
System.out.println(c);
我不知道如何让它打印三角形。任何帮助表示赞赏。
【问题讨论】:
提示:例如打印 *,然后 **,然后 ***,然后 **,然后 * 这是你的答案***.com/questions/22681510/regarding-a-star-pattern @KumarSaurabh 略有不同,他必须实现printChar(int n, char ch)
【参考方案1】:
你需要两个嵌套的 for 循环:
public static void printChar(int n, char c)
// print the upper triangle
for (int i = 0; i < n; ++i)
for (int j = 0; j < i + 1; ++j)
System.out.print(c);
System.out.println();
// print the lower triangle
for (int i = n - 1; i > 0; --i)
for (int j = 0; j < i; ++j)
System.out.print(c);
System.out.println();
【讨论】:
【参考方案2】:首先你的printChar
是错误的。它将在新行中打印每个*
。您需要打印*
字符n
次,然后换行。例如
public static void printChar(int n, char c)
for (int i = n; i > 0; i--)
System.out.print(c);
System.out.println();
在那之后你必须使用printChar
我会推荐 2 for loop 一一递增一递减
public static void main(String[] args)
int n = getInt("Give a number: ");
char c = '*';
// first 3 lines
for (int i = 1; i < n; ++i)
printChar(i, c);
// other 4 lines
for (int i = n; i > 0; --i)
printChar(i, c);
【讨论】:
【参考方案3】:一点递归解决方案:
private static String printCharRec(String currStr, int curr, int until, char c)
String newStr = "";
for (int i = 1; i < curr; i++)
newStr += c;
newStr += '\n';
currStr += newStr;
if (curr < until)
currStr = printCharRec(currStr, curr+1, until, c);
currStr += newStr;
return currStr;
【讨论】:
以上是关于在 Java 中使用循环绘制等腰三角形的主要内容,如果未能解决你的问题,请参考以下文章
用JS修饰div做一个用循环的方式做一个正方形,长方形,三角形 如何写?