JAVA:缺少退货声明

时间:2013-10-22 18:29:43

标签: java javac

我现在对此代码的主要关注是缺少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");
    }
}

使用此代码我只收到错误:

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

如果我切换System.out.println返回,我没有收到任何错误,但我也没有得到ReverseF的答案(“你好”);

3 个答案:

答案 0 :(得分:5)

您有两种选择:写

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

或在return finalString中写下ReverseF并使用

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

答案 1 :(得分: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”,以便您的方法名称表明它正在做什么!

其他反馈:

  • 使用小写启动方法名称,因此您可以将它们与类别
  • 区分开来
  • 用于循环中字符串的连接,你应该使用a StringBuilder的/ StringBuffer的。然后Java不必创建新的 每次迭代循环的字符串对象 - 这可能是一个巨大的问题 性能问题!

答案 2 :(得分: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认为此函数将返回一个字符串。编译器检查是否存在正确类型的return语句。

使用void作为functio类型并在函数内部打印字符串(正如您现在所做),或者添加return语句并将打印移动到调用函数的位置(如已建议的那样) )。

HTH