在java中创建一个ubbi dubbi检测器

时间:2013-11-25 07:59:14

标签: java

我正在尝试在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;
}

3 个答案:

答案 0 :(得分:1)

在您的情况下,条件从未达到成为true

因为

if (phrase.contains(ub)) {
        count++;
    }

条件是

 if (count >= 2) {  // never met. Always false.

这将检查一次然后完成的事件。需要更多的实现来检查涉及loopsub-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;
}