因此,我尝试用此代码解决的原始问题是采用一个长度可变的字符串,然后仅在该字符串包含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;