我正在尝试在java中制作ubbi dubbi探测器。我目前正在尝试计算字符串中有多少ub,然后将它们添加到一个计数器中然后如果我放入的int下面有一定数量,那么它不是ubbi dubbi,但如果它等于或高于然后是ubbi dubbi。我们不允许使用正则表达式,字符串构建器或数组。
以下是我目前的情况:
public static boolean detect(String phrase) {
boolean isUbbi = false;
int count = 0;
CharSequence ub = "ub";
if (phrase.contains(ub)) {
count++;
}
if (count >= 2) {
isUbbi = true;
} else {
isUbbi = false;
}
return isUbbi;
}
答案 0 :(得分:1)
在您的情况下,条件从未达到成为true
。
因为
if (phrase.contains(ub)) {
count++;
}
条件是
if (count >= 2) { // never met. Always false.
这将检查一次然后完成的事件。需要更多的实现来检查涉及loop
和sub-string
等的事件。
如果您可以免费使用Apache commons library
使用
int count = StringUtils.countMatches(phrase, "ub");
如果没有图书馆,
String mainString = "ububsdfub";
Pattern pat = Pattern.compile("ub");
Matcher matcher = pat.matcher(mainString);
int count = 0;
while (matcher.find()) {
count += 1;
}
System.out.println(count); // prints 3 since 3 ub's are there.
基本操作拆分(内部使用正则表达式)
String mainString = "ububsdfUb";
String occurance = "ub";
System.out.println(mainString.split(occurance, -1).length-1);
即使分开也不允许
String mainString = "ububsdfub";
String occurance = "ub";
int index=0;
int count=0;
while ((index = mainString.indexOf(occurance, index)) != -1) {
count++;
index += occurance.length() - 1;
}
System.out.println(count);
答案 1 :(得分:0)
您可以使用String.indexOf(…)
来计算出现次数。
int count=0;
for(int pos=phrase.indexOf(ub); pos>0; pos=phrase.indexOf(ub, pos)+1) count++;
// now count contains the numbers of occurrences of ub in phrase
答案 2 :(得分:-1)
这是我想出来的,只是添加了for循环并且所有工作。
public static boolean detect(String phrase) {
boolean isUbbi = false;
int count = 0;
CharSequence ub = "ub";
for(int i = 0; i < phrase.length(); i++) {
if (phrase.contains(ub)) {
count++;
}
if (count >= 2) {
isUbbi = true;
} else {
isUbbi = false;
}
}
return isUbbi;
}