我在其中一个免费网站上学习Java,我无法解决这个问题,该程序要我打印一个右侧三角形。
public class PrintingLikeBoss {
// copy or rewrite the method of Assignment 39.1 here
public static void printStars(int amount) {
int i;
for (i = 0; i < amount; i++) {
System.out.print("*");
}
System.out.println("");
}
public static void printWhitespaces(int amount) {
// 40.1
int i;
for (i = 0; i < amount; i++) {
System.out.print(" ");
}
}
public static void printTriangle(int size) {
// 40.2
int j = size;
for (int i = 0; i <= size; i++) {
printWhitespaces(j);
printStars(i);
j -= 1;
}
}
public static void xmasTree(int height) {
// 40.3
}
public static void main(String[] args) {
// Tests do not use main, yo can write code here freely!
printTriangle(5);
System.out.println("---");
xmasTree(4);
System.out.println("---");
xmasTree(10);
}
}
我得到的输出似乎很好
compile:
run:
*
**
***
****
*****
---
---
我得到的错误是#34;不要在printTriangle&#34;
的行开头添加额外的空格这是与课程相关的特定错误,程序运行没有问题。
答案 0 :(得分:5)
检查传递给方法的实际值时,您会发现方法printTriangle()
首先调用
printWhitespaces(5);
然后
printStarts(0);
因此;你先打印5个空格;然后零星;然后换行。
因此问题是:对于循环的第一次迭代,您不打印任何星;只是空格+换行符。换句话说:您的三角形以空行开头。
也许这就是作业检查员所抱怨的。因此,您可以尝试将printTriangle()
中的循环更改为以1开头;因为那样你将在第一行打印至少一个*。
答案 1 :(得分:0)
我认为你不希望第一行的空白只是那样做
public static void printTriangle(int size) {
// 40.2
int j = size;
for (int i = 1; i <= size; i++) {
printWhitespaces(j);
printStars(i);
j -= 1;
}
}
将i从0更改为1 我希望我帮助你