JAVA: missing return statement

2019-01-29 13:17发布

my main concern with this code as of right now is a missing return statement.

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");
    }
}

Using this code I only get the error:

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

If I switch the System.out.println to return, I don't get any errors but I also don't get an answer for ReverseF("Hello");

标签: java javac
3条回答
相关推荐>>
2楼-- · 2019-01-29 13:53

Let's break down the keywords in your function header:

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

Now note that Java thinks this function will return a string. The compiler checks to see if there is a return statement of the proper type.

Either use a void as the functio type and print the string inside of the function (as you' re doing now), or add the return statement and move the print to the place where the function is called from (as already suggested).

HTH

查看更多
时光不老,我们不散
3楼-- · 2019-01-29 13:56

You have two options: either write

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

or write return finalString in ReverseF and use

public static void main(String[]args){
  System.out.println(ReverseF("Hello"));
}
查看更多
唯我独甜
4楼-- · 2019-01-29 13:59

You get an compilation error "missing return statement" because your return statement is missing...

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"));
    }
}

Is it necessary that your method is returning a value? If not, just change it from String to void, do the printing in your method and rename it to something like "printReverseF", so that your method name indicate what it's doing!

Other feedback:

  • start method names with lowercase, so you can distinct them from Classes
  • for concatenation of Strings in loops, you should use a StringBuilder/StringBuffer. Then Java doesn't have to create new String-objects per iteration of your loop - this could be a huge performance problem!
查看更多
登录 后发表回答