【问题标题】:Unreachable variable within while loop?while循环中无法访问的变量?
【发布时间】:2017-05-08 13:53:12
【问题描述】:

为什么我的变量在以下循环方法中不可访问(i++ 不可访问)?

    public String returnFailedImages() {
    int i = 0;
    while(i < failedScreenshotImages.size()) {
        return "<img src='" + failedScreenshotImages.get(i) + "'" + ">" + "</br>";
        i++;
    }
    return null;
}

另外,如果我使用 for 循环(没有使用 i++)?:

    public String returnFailedImages() {
    for(int i = 0;i < failedScreenshotImages.size(); i++) {
        return "<img src='" + failedScreenshotImages.get(i) + "'" + ">" + "</br>";
    }
    return null;
}

【问题讨论】:

标签: java


【解决方案1】:

根据您的方法名称,您希望返回多个元素。您可以返回 List&lt;String&gt; 或连接所有失败图像的 Strings :

public String returnFailedImages() {
    StringBuilder result = new StringBuilder();
    for(int i = 0;i < failedScreenshotImages.size(); i++) {
        result.append("<img src='" + failedScreenshotImages.get(i) + "'" + ">" + "</br>");
    }
    return result.toString();
}

【讨论】:

    【解决方案2】:

    当你这样做时:

    while(i < failedScreenshotImages.size()) {
            return "<img src='" + failedScreenshotImages.get(i) + "'" + ">" + "</br>";
            i++;
    }
    

    您实际上是在 return 语句中结束您的方法,因此您永远不会到达 i++ 语句。你应该这样做:

    public String[] returnFailedImages() {
      int i = 0;
      String[] res = new String[failedScreenshotImages.size()];
      while(i < failedScreenshotImages.size()) {
          res[i] = "<img src='" + failedScreenshotImages.get(i) + "'" + ">" + "</br>";
          i++;
      }
      return res;
    }
    

    然后你可以遍历数组来获取你的图像。

    【讨论】:

      【解决方案3】:

      因为您的退货声明在i++; 行之前。

      【讨论】:

        【解决方案4】:

        在到达i++ 行之前,您正在从您的方法返回。我怀疑您想构建一个结果,在此之前为每个不同的i 扩展,以便您可以在最后返回此构造。

        【讨论】:

        • 感谢您的留言,能否添加您将使用的代码?
        • 看看 Eran 的回答。
        【解决方案5】:

        return 语句将控制权交给调用它的函数,并且可以将一些值/对象放入堆栈。 (返回值。)

        在您的代码中放置一个字符串 (

        【讨论】:

          猜你喜欢
          • 2019-11-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-08
          • 1970-01-01
          • 1970-01-01
          • 2012-06-17
          • 1970-01-01
          相关资源
          最近更新 更多