方法:
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吗?
答案 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;
}
希望这有帮助。