2013-05-31 29 views
-1

它是一个贷款计算器。我有一个循环像另一种方法返回循环结果

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和字符串两者。

+0

你究竟想要追加到txtarea? 1 .... 1,2 .... 4等,? – vpram86

+0

你可以发布堆栈跟踪吗? – Keppil

+0

我想追加为2 .......... 4,3 ........... 9就像 – Shasi

回答

0

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

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

最有可能你想在行之间有一个分隔符。 ;) –

+0

另外,在构建结果时使用'StringBuilder'。 – Keppil

+0

切勿使用s'String'来累积某物! –

6

最有可能的是你打算为以下。您只能返回一个值,而不能返回多个值。顺便说一句你已经有一个字符串,所以你的错误信息是困惑的。

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

错误消息是正确的,编译器只是想在'for'循环之后使用return语句。 – Keppil

+0

我的第一个评论的道歉,更好地自己拿一杯咖啡:-)但是我想知道,因为当类型“int + String”的表达式在Java中有效时,我想在以前的版本中我们不得不说“'”+ i +“......”'? –

+0

@GyroGearless我不相信你需要编写'“”+ i +“string”'为了清晰起见,你可以这样写。 –

-1

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

另外@Peter Lawrey说,你不能从函数返回多个值。所以,你可以使用由彼得Lawrey

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

给定的,或者你可以用取代你的for循环do..while那里流在循环肯定走了,虽然我不认为这是一个解决方案,但我正在给出这个来说明为什么编译器在for循环之后强制返回语句。

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

但是会在第一次迭代时返回!这基本上是一件好事,因为否则它将是一个无限循环。 –

+0

@GyroGearless do while循环只是为了说明为什么编译器在for循环之后强制执行return语句,而不是解决方案。 –

0

我的建议,对更清洁和更容易阅读的代码会是这样,有函数返回每个单独的贷款int值,然后构建逻辑之外的字符串。 如果我正确理解你的问题。

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