这就是问题:
创建一个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);
}
}
我不确定如何打印三角形。任何帮助表示赞赏。
答案 0 :(得分:2)
您需要两个嵌套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();
}
}
答案 1 :(得分: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();
}
次,然后再打印一行。 E.g。
printChar
在那之后你必须使用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);
}
我会推荐2 for循环一个递增一个deincrementing
{{1}}
答案 2 :(得分:0)
一个小的递归解决方案:
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;
}