Java 我能';在这个印刷程序中似乎找不到问题

Java 我能';在这个印刷程序中似乎找不到问题,java,Java,我在一个免费的网站上学习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("*"

我在一个免费的网站上学习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);
}
我得到的错误是“不要在printTriangle中的行首添加额外的空格”


这是一个与课程相关的特定错误,程序运行时没有问题。

当您检查传递给方法的实际值时,您会发现方法
printTriangle()
首先调用

 printWhitespaces(5);
然后

 printStarts(0);
所以,;首先打印5个空格;然后星;然后是一条新线

因此,问题是:对于循环的第一次迭代,您没有打印任何星星;只有空格+换行符。换句话说:三角形以一条空线开始


也许这就是作业核查员抱怨的。因此,您可以尝试将
printTriangle()
中的循环更改为1;不是0。因为这样,您将在第一行上至少打印一个*。

当您检查传递给方法的实际值时,您将发现您的方法
printTriangle()
首先调用

 printWhitespaces(5);
然后

 printStarts(0);
所以,;首先打印5个空格;然后星;然后是一条新线

因此,问题是:对于循环的第一次迭代,您没有打印任何星星;只有空格+换行符。换句话说:三角形以一条空线开始


也许这就是作业核查员抱怨的。因此,您可以尝试将
printTriangle()
中的循环更改为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;
    }
}
publicstaticvoidprintTriangle(int-size){
// 40.2
int j=尺寸;

对于(inti=1;i我想你不希望第一行有空格,就这样做吧

  public static void printTriangle(int size) {
    // 40.2
    int j = size;
    for (int i = 1; i <= size; i++) {
        printWhitespaces(j);
        printStars(i);
        j -= 1;
    }
}
publicstaticvoidprintTriangle(int-size){
// 40.2
int j=尺寸;

对于(int i=1;i)您以
0开始循环,因此它将在第一次迭代中打印0颗星…您认为这是什么意思?提示:将空格替换为破折号以查看发生了什么()。谢谢,破折号真的很有帮助。你用
0
开始你的循环,因此它将在第一次迭代中打印0颗星…你认为这是什么意思?提示:用破折号替换空格以查看发生了什么()。谢谢,破折号真的很有帮助。