2013-10-22 163 views
0

我現在主要關心的是這段代碼是一個缺失的return語句。JAVA:缺少return語句

public class stringstuff{ 

    //using charAt  
    public static String ReverseF(String n){ 
     String finalstring = ""; 
     int len = n.length(); 
     for (int i = 0; (i < n.length()); i++){ 
      finalstring += (n.charAt(len - i - 1)); 
     } 
     System.out.println(finalstring); 
    } 

    public static void main(String[]args){ 
     ReverseF("Hello"); 
    } 
} 

使用此代碼我只得到了錯誤:如果我切換的System.out.println返回

stringstuff.java:11: missing return statement 
} 
^ 
1 error 

,我沒有得到任何錯誤,但我還沒有得到一個ReverseF(「你好」)的答案;

+0

return語句做了什麼?返回類型表示什麼? –

回答

5

你有兩個選擇:要麼寫

public static void /* not String */ ReverseF(String n){ 

ReverseFreturn finalString和使用

public static void main(String[]args){ 
    System.out.println(ReverseF("Hello")); 
} 
0

你得到一個編譯錯誤 「缺少return語句」 因爲你return語句丟失..

public class Stringstuff { 

    // using charAt 
    public static String reverseF(String n) { 
     String finalstring = ""; 
     int len = n.length(); 
     for (int i = 0; i < n.length(); i++) { 
      finalstring += n.charAt(len - i - 1); 
     } 

     return finalstring; 
    } 

    public static void main(String[] args) { 
     System.out.println(reverseF("Hello")); 
    } 
} 

是否需要您的方法正在返回一個值? 如果不是,只需將其從String更改爲void,然後在方法中執行打印並將其重命名爲「printReverseF」之類的內容,以便您的方法名稱指示它正在執行的操作!

其他反饋:

  • 小寫啓動方法的名字,這樣你就可以區別出它們來自類
  • 爲字符串的鏈接中循環,你應該使用StringBuilder的 /StringBuffer的。然後,Java不必爲循環的每次迭代創建新的 字符串對象 - 這可能是一個巨大的 性能問題!
0

讓我們打破的關鍵字在你的函數頭:

 
Public - Any function has access to this function 
Static - This function does not operate on object instance variables and does not require an instance of this object to be created before it can be used 
String - this function will return a String 
..name.. - the name of the function 
(params) - input for your function 

現在注意,Java會把這個函數會返回一個字符串。編譯器檢查是否存在正確類型的返回語句。

要麼使用void作爲函數類型並在函數內部打印字符串(如現在所做的那樣),要麼添加return語句並將打印移動到函數被調用的地方(因爲已經建議)。

HTH