返回语句在Java中无法正常工作

时间:2017-07-01 14:11:12

标签: java null return

我有以下代码

static String super_reduced_string(StringBuilder s){
   for(int i=0;i<s.length()-1;i++){
       if(s.charAt(i)==s.charAt(i+1)){
           StringBuilder s1= s.delete(i,i+2);
           //System.out.println("Reduced String is "+s1 +s1.length());
           if(s1.length()==0){
               System.out.println("Reduced String is"+s1 +s1.length());
               return "Empty String";

               }
           super_reduced_string(s1);
       }
   }
    return s.toString();
}

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String s = in.next();
    String result = super_reduced_string(new StringBuilder(s));
    System.out.println(result);
}

当我将输入作为“aa”传递时,它返回“Empty String”作为输出但是当我传递“baab”时,它返回null作为输出。我无法理解为什么会这样。

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

您可以设置删除重复的字母:

if(s.charAt(i)==s.charAt(i+1)){
           StringBuilder s1= s.delete(i,i+2);

因此,当您将aa传递给方法时,它将删除这两个字母,因为它们是相同的。如果您通过baab,则会删除aa,但会删除bb,因为它们也是重复的。

修改

如果您的bb没有,则需要添加return语句:

if