我必须创建一个名为“ contains”的方法,该方法接受一个字符串和一个字符作为参数,如果该字符在字符串中出现两次或两次以上,则返回true。
示例:输入contains(“ Apple”,'p')应该返回“ True”
private boolean contains(String a,char b) {
if(a.contains(b)) {
print("true");
}
else {
print("");
}
//boolean c = a.contains('l');
return false;
}
我知道此代码是错误的...我想知道我必须做的事情以及必须要解决的问题。 谢谢您的建议 谢谢。
答案 0 :(得分:2)
有几种方法可以做到这一点,但最简单的方法就是循环遍历String以查找char,如果count达到2,则返回true。
为此,请考虑使用
for (char c : input) {
if (c == myChar) count++;
if (count >= 2) return true;
}
return false;
另一种方法是使用String.replace并将所需的字符替换为""
然后比较String前后的大小
答案 1 :(得分:0)
countMatches(a,b)
返回String
a中b的计数。来自org.apache.commons.lang3
private boolean contains(String a,char b) {
return StringUtils.countMatches(a, b)>=2 ;
}
或者在简单的Java中,您可以使用
private boolean contains(String a,char b) {
return (a.length() - a.replaceAll(String.valueOf(b),"").length())>=2 ;
}
答案 2 :(得分:0)
您的方法可能会根据原始字符串与没有给定字符的字符串之间的大小差返回一个布尔值:
return (a.length() - (a.replace(b, '')).length()) >= 2 ;
答案 3 :(得分:0)
理论上:
首先:您需要使用for循环遍历输入的字符串字符,然后在每次迭代中将字符串中的当前字符与作为方法参数给出的其他字符参数进行比较。如果它们匹配,则可以增加一个计数器(变量)。然后比较计数器值是否为2并立即返回true。在方法结束时,就像已经完成一样,您可以返回false。
第二:您打印的是true,而不是返回true。当变量的值变为2时应使用 return true;
答案 4 :(得分:0)
这是执行此操作的简单方法之一。此处将字符串放入char数组。这样一来,检查char数组的元素并找出相同的字符将变得更加容易。
private boolean contains(String a, char b) {
char[] c_array = a.toCharArray();
int count = 0;
for (int i = 0; i < c_array.length; i++) {
if (b == c_array[i]) {
count++;
continue;
} else {
continue;
}
}
if (count >= 2) {
return true;
} else {
return false;
}
}
答案 5 :(得分:-3)
public class Demo {
public static boolean contains(String str,char c){
//todo:check str for NullPointExecption
int flag=0;
for(int i=0;i<str.length();i++){
if(c==str.charAt(i)){
flag++; //if str contains char c,flag=flag+1
}
if(flag>=2){
return true; //if flag>=2,return true
}
}
return false;
}
public static void main(String[] args) {
System.out.println(contains("appple", 'p'));//result is true
}
}