在Java中,为什么会出现“必须返回字符串的结果类型”问题?

在Java中,为什么会出现“必须返回字符串的结果类型”问题?,java,string,methods,return,Java,String,Methods,Return,我是语言编程新手。有人能解释为什么我得到这个方法必须返回字符串问题的结果类型吗?实现我的目标最简单的代码是什么?还有,我的编码有什么问题 我想在这个方法中实现的目标是返回一个字符串,如果它在第一个索引中包含o,它应该在输出中返回o,作为一个加法,如果它在字符串的第二个索引中包含z,方法应该将其返回为z,如果它同时包含这两个,我的意思是输入字符串以oz开始。。。方法应返回一个字符串作为oz public String startOz(String str) { if (str

我是语言编程新手。有人能解释为什么我得到这个方法必须返回字符串问题的结果类型吗?实现我的目标最简单的代码是什么?还有,我的编码有什么问题

我想在这个方法中实现的目标是返回一个字符串,如果它在第一个索引中包含o,它应该在输出中返回o,作为一个加法,如果它在字符串的第二个索引中包含z,方法应该将其返回为z,如果它同时包含这两个,我的意思是输入字符串以oz开始。。。方法应返回一个字符串作为oz

public String startOz(String str) 
{

         if (str.length() <= 1)

         return str;

         else 

         if(str.substring(0, 1).equals("o"))

         if (str.substring(1, 2).equals("z"))
         return "oz";

         else 
         return "o";
谢谢。

问题:

如果字符串子字符串将等于o,则未指定返回值

解决方案:

当您点击if语句时添加一个返回值,这样编译器就知道该方法将返回某些内容

 if(str.substring(0, 1).equals("o"))
     return "value you want to return";

您应该以更可读的方式重新排列代码:

public String startOz(String str) 
{
    if (str.length() <= 1) {         
        return str;          
    } else if (str.substring(0, 1).equals("o")) {    
        if (str.substring(1, 2).equals("z")) {
            return "oz";
        } else {
            return "o";
        }
    } // no return value 
}
这将让您立即看到,如果第一个和第二个条件都为false,则没有返回值


您可以通过在末尾添加一个else子句来解决这个问题,该子句将返回您想要的任何内容,或者在方法的最后一行添加一个return语句。

由于您是新手,我强烈建议您使用大括号。对代码进行整理会带来一次重新体验:

if (str.length() <= 1) {
     return str;
}
else { 
     if(str.substring(0, 1).equals("o")) {
         if (str.substring(1, 2).equals("z")) {
             return "oz";
         }
         else {
             return "o";
         }
     }
     // You need another return statement here OR
 }
 // You need one here.
正如您现在所看到的,有些情况下,您的函数将不返回任何内容,这是不允许的

public String foo(String str)
{
   if(str.substring(0,1).toLowerCase().equals("o"))
   {   
      if(str.substring(1,2).toLowerCase().equals("z")
         return "oz";
      return "o";
   }
   else if(str.length() < 1) return str;

   else return "o";

}

如果有if语句,请确保您返回了一些内容,否则它将跳过您的行,或者在出现错误时导致您出错。此代码检查第一个字符,然后检查第二个字符。如果两者都不是,则检查字符串的长度,如果仍然不是,则返回o。

您需要正确缩进代码,以便理解ELSE的实际含义。删除所有ELSE!!!使用{}还将帮助您发现这些错误。我认为if语句与中的下一个if行一起使用,第二行需要缩进。
public String foo(String str)
{
   if(str.substring(0,1).toLowerCase().equals("o"))
   {   
      if(str.substring(1,2).toLowerCase().equals("z")
         return "oz";
      return "o";
   }
   else if(str.length() < 1) return str;

   else return "o";

}