因此,我尝试用此代码解决的原始问题是采用一个长度可变的字符串,然后仅在该字符串包含1-3个“ e's”且任何更少或更多的return false时才返回true。我想从给定的字符串中分别提取“ e”并将其放入单独的字符串中,然后测试新字符串必须产生多少“ e”才能产生正确的布尔值。通过将3个“ e”放入空字符串来隔离pol执行,我发现对于至少具有1个e的所有内容,该代码将返回false。那里没什么问题,但是随后我用2个“ e's”替换了空字符串,发现至少有1个e的任何东西都返回true,即使该字符串总共包含50个“ e's”也是如此。这意味着循环在遇到if语句时仅迭代一次,因此仅将1 e添加到String pol。我的首要问题是:如何获得根据控件迭代if语句的循环。

也不必担心此代码之前的内容:只知道这是布尔值

String pol = "";
String some;
for (int len = 0; len < str.length(); len = len + 1) {
    some = str.substring(len, len + 1);
    if (some.equals("e")) {
        pol = "" + some;
    }
}
if (pol.equals("e") || pol.equals("ee") || pol.equals("eee"))
    return true;
return false;

最佳答案

每当遇到e时,您都将覆盖pol而不是附加到其后。代替

pol = "" + some;


您可能的意思是:

pol += some;


无论如何,追加到字符串似乎是完成此任务的笨拙方式。每次遇到e时,只增加一个整数计数器会容易得多。使用Java 8的流甚至更简单:

long count = str.chars().filter(c -> c == 'e').count();
return count >= 1 && count <= 3;

07-26 09:28