在字符串中出现字母时返回true?

时间:2014-02-18 14:21:51

标签: java

它应该返回true,因为字符串S中有'c'但它一直返回False?

public class A {
public static void main(String[] args){

  System.out.println(contains('c', "cccc"));
}



  public static boolean contains(char c, String s) {
      boolean to_return = true;
    while(true) {
      if(s.equals("")){
      return to_return = false;
  } else {
      char c2 = s.charAt(0);
      if(c==c2) { 
      to_return = true; 
      }
  }

      s=s.substring(1);
    }

  }


}

我不知道为什么不是吗?如果字符串为空,它只返回false,这显然是(我不允许使用for循环等。

4 个答案:

答案 0 :(得分:2)

您没有在代码中的任何位置返回true。因此递归发生,直到s.equals("")被评估为true并返回false

更改

  if(c==c2) { 
  to_return = true; 
  }

  if(c==c2) { 
  return true; 
  }

答案 1 :(得分:1)

工作的:

public static boolean contains(char c, String s) {
    return s.indexOf(c) != -1;
}

答案 2 :(得分:0)

如果你想要一个loopy版本,请使用这样的for循环,因为它应该更干净:

public static boolean contains(char c, String s) {
    boolean to_return = true;
    for(int i=0;i<s.length();i++) {
        if(s.charAt(i) != c) {
            to_return = false;
        }
    }
    return to_return;

}

或者,您可以这样做:

public static boolean contains2(char c, String s) {
    return s.contains(String.valueOf(c));
}

答案 3 :(得分:0)

你能尝试一种更清洁的方法,它似乎太杂乱了。

public static boolean contains(char c, String s) {
    if (s == null)
        return false;

    if (s.equals(""))
        return false;

    int size = s.length();
    for (int i = 0; i < size; i ++) {
        if(s.charAt(i) == c)
            return true;
    }

    return false;
}