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对象 - 这可能是一个巨大的性能问题!