2013-05-01 38 views
2

方法:程序不返回字符串

public String getRowsOf3Stars (int rows) 

描述:

規定動作2)完成getRowsOf3Stars方法,該方法是 傳遞一個int(行)作爲參數。該方法返回一個字符串 ,其中包含該數量的三星級行。

例如,

getRowsOf3Stars(2) // returns 「***\n***\n」 

如果行是小於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 

是否有人可以解釋爲什麼我的程序沒有返回一個字符串?

回答

1

改變這種

for(int starRows=1;starRows<rows;starRows++){ 

return getRowsOf3Stars(starRows); // your code here don't return any thing here. 
1

return "";你的方法作爲最後一行擺脫錯誤的。這是抱怨,因爲有可能你的當前線路返回可能永遠不會因爲你有條件。

例如,如果您提供參數rows = 1,則返回將永遠不會發生。

1

Java編譯器將確保從該方法返回字符串。 現在看到代碼,

1)if(rows<1)

那麼只有將工作並返回一個字符串。

2)但是if (rows>=1)

那麼它會去for循環,編譯器不能在編譯時for循環將執行與否,因爲這是一個運行時mechanism.So其不能確定確定對於for循環將執行或不執行的編譯器。 如果for循環沒有執行,你的方法不會返回任何東西。

現在編譯器已經確認了,應該有一個字符串返回,它顯示了錯誤。

所以你可以做的是,在for循環後面的else子句中,你可以返回一個默認字符串return "";或按照你的要求。

0

除了不返回字符串的問題,我沒有看到內部循環的原因,因爲你正在循環內發出一個返回。我認爲這會達到你想要的:

public String getRowsOf3Stars (int rows) { 
String ROWOF3STARS = "***\n"; 
String returnString = ""; 

if (rows > 0){ 

    for(int starRows=1;starRows<rows;starRows++){ 
     returnString += ROWOF3STARS; 
    } 
} 
return returnString; 
} 

希望這會有所幫助。