所以,我试图用这段代码解决的原始问题是采用不同长度的字符串,然后只有当该字符串包含在1-3和#34之间时才返回true;""如果有任何更少或更多的回报是假的。我想单独提取" e"从给定的字符串中将它们放入一个单独的字符串中,然后测试有多少" e""新String必须生成正确的布尔值。通过放置3" e"来隔离pol执行。进入空字符串,我发现代码为至少1 e的所有内容返回false。没有错,但后来我用2" e"替换了空字符串。并发现任何至少有1 e的东西都返回true,即使该String包含50" e"总共。这意味着循环在遇到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;
答案 0 :(得分:2)
每当遇到e
时,覆盖 pol
而不是附加到pol = "" + some;
。而不是
pol += some;
你可能意味着:
e
无论如何,追加字符串似乎是完成此任务的笨重方式。每次遇到long count = str.chars().filter(c -> c == 'e').count();
return count >= 1 && count <= 3;
时,只增加一个整数计数器会容易得多。甚至更简单的Java 8流:
match
答案 1 :(得分:1)
如果我理解正确,您希望查看特定字符串中有多少个。有一种非常简单的方法可以做到这一点,称为Enhanced for loop。使用这种循环,您可以在几行中完成:
String s = "Hello There!";
int numOfEs = 0;
boolean bool = false;
// loops through each character in the string s ('H', 'e', 'l', etc)
for (Character c : s.toCharArray() /* Make String s a list of characters to iterate through*/) {
if (c.equals('e') || c.equals('E')) // Make Uppercase and Lowercase Es both count
numOfEs++;
}
// Are there 3 or more E's?
// If there aren't, the boolean will be false because I defined it to equal false.
if (numOfEs >= 3)
bool = true;
System.out.println(bool + ": There are " + numOfEs + " e's.");
答案 2 :(得分:0)
所有poll = "" + some
所做的都是投票。试试poll = poll + some