JAVA help ;使用 while 循环构建一个由星号组成的单行字符串

JAVA help ;Use a while loop to build a string that is a single line consisting of asterisks

我正在研究的问题是:

使用 while 循环构建一个由星号组成的单行字符串。星号的个数由参数 numberOfStars 决定,不能为负数。 Return 字符串

我目前的代码是:

public String Question1(int numberOfStars) //cannot change this line

    {
        String str = "*";
        while (numberOfStars > 0)
                {numberOfStars--;
        return str;}
    }

错误eclipse给出: 此方法必须 return 类型为 String

的结果

谢谢,

首先,如果您使用标准代码格式(标准格式请参见下面的代码),您自己会更容易看到此编译错误。编译错误是因为如果永远不会进入 while 循环,您的函数将永远不会 return 值:

public String Question1(int numberOfStars) {
    String str = "*";
    while (numberOfStars > 0) {
        numberOfStars--;
        return str;
    }
    // compiler thinks: "what if the code gets here?"
    // no String would be returned
}

是的,你说 numberOfStars 必须是非负数,但编译器不知道。此外,numberOfStars 可能为 0,在这种情况下仍不会进入循环。

为了解决编译错误,你需要在while循环外添加一个return语句,以防循环永远不会像这样进入:

public String Question1(int numberOfStars) {
    String str = "*";
    while (numberOfStars > 0) {
        numberOfStars--;
        return str;
    }
    return "";
}

现在,这个 "fixed" 代码仍然不会 return 一个包含指定数量星星的字符串,就像你想要的那样,但我会让你自己弄清楚这部分,因为它看起来你正在尝试学习编程。