2015-10-31 87 views
1

我試圖返回?,?,?的值。當執行主要功能時。但是,我只能得到答案。 我不想使用System.out.println(雖然它完成了這項工作),因爲我想將這些值返回給另一個函數。第一回工程,我也想,但在第二部分,我不知道如何連接的2個回報和for循環,因爲無用後,我已經改變的println與回報使用for循環返回字符串與連接使用

public static void main(String[] args) 
{ 
    Scanner kb = new Scanner(System.in); 
     r r = new r(); 
     System.out.println(r.func(3)); 
} 

    public static String func(int size) 
    { 
    if(size == 1) 
    return "?"; 
    else 
    { 
    for (int i = 1; i < size; i++) 
    { 
    return "?,"; 
     } 
return "?"; 
    } 
    } 
+0

你認爲'return'有什麼用?你爲什麼認爲你的輸出是'?,?,?'。你在標題中提到了'concatenation',但是在你的代碼中沒有看到任何字符串被串聯的地方? – sam

+1

只有一個return語句會被執行...... for循環在返回後不會繼續執行,如果這是你所期望的。你可以編寫一個遞歸函數來完成你想要的東西。 – jpw

+0

@sam我知道它將返回「一個值」,但我想將for循環中的答案與循環外部的答案連接起來,然後返回該答案。那麼是否有一種方法可以存儲循環內部的內容,而無需創建打印語句? – rullzing

回答

0

Editted代碼有一點,你試圖在for循環中使用return語句。你必須明白,一旦返回語句被調用,指定的值將被自動從函數中取出。你不能使用這個的多個版本。嘗試下面的代碼,看看是否有效。我做了一個字符串,並在每次需要時都添加「?」。

public static void main(String[] args) 
{ 
    Scanner kb = new Scanner(System.in); 
     r r = new r(); 
     System.out.println(r.func(3)); 
} 

    public static String func(int size) 
    { 
    String value = ""; 
    if(size == 1) 
     return "?"; 
    else { 
     for (int i = 1; i < size; i++){ 
     value += "?,"; 
     } 

     value+= "?"; 
     return value; 
} 

}

+0

沒問題!不要忘記提高投票率,以便可以幫助其他人解決同樣的問題:-) –

2

我認爲你正在尋找在這裏(你也許會一行ternary operation)像

return (size == 1) ? "?" : "?,"+func(size-1); 

你能做到這一點建立一個遞歸方法迭代地用StringBuilder類似

StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < size; i++) 
{ 
    if (i != 0) { 
     sb.append(", "); 
    } 
    sb.append("?"); 
} 
return sb.toString(); 
0

儘量不要返回在循環..

public static String func(int size) 
     {String retval =""; 
     if(size == 1) 
     return "?"; 
     else 
     { 
     for (int i = 1; i < size; i++) 
     { 
      retval= retval+"?,"; 
      } 
    return retval+"?"; 
     } 
     } 
+0

StringBuilder是不錯的選擇,而不是使用字符串。 – RamPrakash

0

return關鍵字,立即停止執行的方法內的代碼,並傳遞值調用的地方。

您必須從循環中移除return並將其放在後面。接下來,您必須在某處保存當前結果 - 用逗號分隔您的問號。


讓我們定義一個名爲Stringresult新的變量,並與空字符串初始化:

String result = ""; 

其次,我們必須寫我們的循環和1之間的迭代值X(在這個例子中:您size變量):

for(int i = 1; i <= size; i++) { 
    result += "?,"; 
} 

之後,我們有內問號適當數量變量。現在是時候使用return關鍵字傳遞價值的地方,您呼叫的方法:

return result; 

現在的主要方法裏面println方法會得到什麼,我們回來了 - 串問號。

相關問題