程序不返回String

时间:2013-05-01 04:23:32

标签: java string if-statement for-loop return

方法:

public String getRowsOf3Stars (int rows)

说明

  

强制练习2)完成getRowsOf3Stars方法   传递int(行)作为参数。该方法返回一个String   包含该数量的3星行。

例如,

getRowsOf3Stars(2)  // returns “***\n***\n”

如果rows小于1,则返回一个空String。 一个例子:

getRowsOf3Stars(2)  // should return "***\n***\n"

我写的:

public String getRowsOf3Stars (int rows) {
    String getRowsOf3Stars="***\n";
    if (rows<1){
        String none="";
        return none;
    }
    else{
        for(int starRows=1;starRows<rows;starRows++){
            return getRowsOf3Stars;
        }
    }
}

我在CodeWrite上收到的错误:

private String getRowsOf3Stars(int rows) throws Exception {
    >> This method must return a result of type String

有人可以解释为什么我的程序没有返回String吗?

4 个答案:

答案 0 :(得分:1)

更改此

for(int starRows=1;starRows<rows;starRows++){

return getRowsOf3Stars(starRows); //  your code here don't return any thing here.

答案 1 :(得分:1)

return "";作为方法的最后一行以消除错误。这是抱怨,因为你可能永远不会因为你所拥有的条件而调用当前你回来的行。

例如,如果您提供参数rows = 1,则返回将永远不会发生。

答案 2 :(得分:1)

Java编译器会确保从该方法返回一个字符串。 现在看代码,

1)if(rows<1)

然后才会工作并返回一个字符串。

2)但是if (rows>=1)

然后它将进入for循环,并且编译器无法在编译时确定for循环将执行与否,因为这是一个运行时机制。因此,它不确定编译器for循环将执行或不。 如果for循环没有执行,你的方法将不会返回任何内容。

现在,由于编译器必须确保,应该有一个字符串返回,它显示错误。

所以你可以做的是,在for循环之后的else子句中你可以返回一个默认字符串return "";或根据你的要求。

答案 3 :(得分:0)

除了没有返回字符串的问题之外,当你在循环中发出一个返回时,我没有看到内部循环的原因。我认为这可以实现你想要的目标:

public String getRowsOf3Stars (int rows) {
String ROWOF3STARS = "***\n";
String returnString = "";

if (rows > 0){

    for(int starRows=1;starRows<rows;starRows++){
        returnString += ROWOF3STARS;
    }
}
return returnString;
}

希望这有帮助。