循环不会多次迭代if语句

时间:2017-10-02 22:02:40

标签: java string for-loop if-statement boolean-expression

所以,我试图用这段代码解决的原始问题是采用不同长度的字符串,然后只有当该字符串包含在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; 

3 个答案:

答案 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