JAVA:缺少退货声明

我现在对此代码的主要关注是缺少返回语句。

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的答案(“你好”);

你有两个选择:要么写

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

或者在ReverseF写入return finalString并使用

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

让我们分解函数头中的关键字:

公共 - 任何函数都可以访问此函数
静态 - 此函数不对对象实例变量进行操作,并且在使用之前不需要创建此对象的实例
 String  - 此函数将返回一个String
 ..name ..  - 函数的名称
 (参数) - 为您的function输入

现在请注意,Java认为此函数将返回一个字符串。 编译器检查是否存在正确类型的return语句。

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

HTH

您收到编译错误“缺少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不必在循环的每次迭代中创建新的String对象 - 这可能是一个巨大的性能问题!