【问题标题】:Program not returning a String程序不返回字符串
【发布时间】:2013-04-25 03:06:18
【问题描述】:

方法:

public String getRowsOf3Stars (int rows)

说明:

必修练习 2) 完成 getRowsOf3Stars 方法,该方法是 传递了一个 int(rows) 作为参数。该方法返回一个字符串 包含该数量的 3 星行。

例如,

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

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

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

有人能解释一下为什么我的程序没有返回字符串吗?

【问题讨论】:

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


    【解决方案1】:

    除了不返回字符串的问题之外,我看不到内部循环的原因,因为您在循环内发出返回。我认为这会完成你想要的:

    public String getRowsOf3Stars (int rows) {
    String ROWOF3STARS = "***\n";
    String returnString = "";
    
    if (rows > 0){
    
        for(int starRows=1;starRows<rows;starRows++){
            returnString += ROWOF3STARS;
        }
    }
    return returnString;
    }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

      1) if(rows&lt;1)

      then only if 会起作用并返回一个字符串。

      2)但是if (rows&gt;=1)

      然后它会进入for循环,编译器无法在编译时确定for循环是否会执行,因为这是一种运行时机制。所以编译器不确定for循环会执行还是不是。 如果 for 循环不执行,您的方法将不会返回任何内容。

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

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

      【讨论】:

        【解决方案3】:

        return ""; 作为方法的最后一行以消除错误。它之所以抱怨,是因为由于您的条件,您当前返回的线路可能永远不会被调用。

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

        【讨论】:

          【解决方案4】:

          改一下

          for(int starRows=1;starRows<rows;starRows++){
          
          return getRowsOf3Stars(starRows); //  your code here don't return any thing here.
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-09-09
            • 1970-01-01
            • 2012-01-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多