【问题标题】:return loop results for another method返回另一个方法的循环结果
【发布时间】:2013-05-31 08:08:59
【问题描述】:

它是一个贷款计算器。我有一个像

这样的循环
    public String loopresult(){
     for (int i=1; i<10; i++)
     return ((i) + "..........." + (i)*(i))
     }

它说这个类必须返回字符串值。 我试过了

    valueOf.String((i) + "........" +(i)*(i)))

但没用。

我必须将它附加到 txtArea 中。

    txtArea.append(loopresult())

我想要的 txtArea 里面是什么样子的

2.........4 3…………9 依此类推,所以这意味着这一行将同时具有 int 和 string。

【问题讨论】:

  • 实际上你想将什么附加到 txtarea? 1....1, 2..4 等等,?
  • 你能发布堆栈跟踪吗?
  • 我想追加为 2........4, 3........9 喜欢 on
  • @SenthilPrabhu 你能解释一下这会有什么帮助吗?

标签: java string


【解决方案1】:

您的意图很可能是以下内容。只能返回一个值,不能返回多个值。顺便说一句,您已经有一个字符串,所以您的错误消息很混乱。

 public String loopresult(){
     StringBuilder sb = new StringBuilder();
     for (int i=1; i<10; i++)
         sb.append(i + "..........." + i*i + "\n");
     return sb.toString();
 }

【讨论】:

  • 错误信息是正确的,编译器也只是想在for循环之后有一个return语句。
  • 为我的第一条评论道歉,最好自己喝杯咖啡 :-) 但我想知道什么时候“int + String”类型的表达式在 Java 中是有效的,我想在以前的版本中我们有说"" + i + "......" ?
  • @GyroGearless 我不相信你需要写"" + i + "string" 为了清楚起见你可以这样写。
【解决方案2】:

返回值只会返回一次,你必须在for循环之后追加和返回,试试下面的代码

public String loopresult() {
        String finalValue = "";
        for (int i = 1; i < 10; i++) {
            finalValue += (i) + "..........." + (i) * (i);
        }
        return finalValue;
    }

【讨论】:

  • 您很可能需要在行之间使用分隔符。 ;)
  • 另外,在构建结果时使用StringBuilder
  • 永远不要用String来积累东西!
【解决方案3】:

我的建议是,为了使代码更简洁、更易于阅读,让函数返回每个单独贷款的 int 值,然后在该逻辑之外构造字符串。 如果我正确理解您的问题。

给我们更多的细节。你想在文本区写什么?几种不同的贷款价值?

【讨论】:

    【解决方案4】:

    编译器发出警告,因为您正在使用 for 循环。可能会发生 for 循环中的条件(对于某些动态值)本身第一次失败并且流不会进入 for 循环,这就是编译器强制您在 for 循环之后编写 return 语句的原因。

    正如@Peter Lawrey 所说,您不能从函数返回多个值。所以你可以使用 Peter Lawrey 给出的

    StringBuilder sb = new StringBuilder();
         for (int i=1; i<10; i++)
             sb.append(i + "..........." + i*i + "\n");
         return sb.toString();
    

    或者你可以用 do..while 替换你的 for 循环,其中流肯定会进入循环,虽然我不认为这是一个解决方案,但我给出这个是为了说明为什么编译器在 for 循环之后强制返回语句。

    int i = 1;
    do{
        return ((i) + "..........." + (i) * (i));
        ++i;
    }while(i<10);
    

    【讨论】:

    • 但将在第一次迭代时返回!这基本上是一件好事,因为否则它将是一个无限循环。
    • @GyroGearless do while 循环只是为了说明为什么编译器在 for 循环之后强制返回语句,而不是本质上的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2018-06-05
    • 2014-10-26
    • 2022-11-27
    • 1970-01-01
    • 2013-12-18
    • 2020-05-06
    • 2020-05-07
    相关资源
    最近更新 更多