它应该返回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循环等。
答案 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;
}