如何有条件地增加?

时间:2018-07-06 13:29:46

标签: java

所以我是一个完整的初学者,我想知道是否有可能有条件地增加计数器。我正在尝试计算句子中的字母“ I”,每次我传递“ I”时,我都希望计数器加1,但是如果这些“ III”加在一起超过1,它仍只会加1之后的字符,例如“ IIIaI”,该字符将算作2个实例。     这可能吗?     抱歉,这是我的代码:

public static int countTheIs(string sentence){
        int iCounter = 0;
        String iCount = "iI"; //both cases included
        for (int j = 0; j < sentence.length(); j++){
            char ch =sentence.charAt(j);
            if (iCount.indexOf(ch) != -1){
           iCounter++;
                }
            }
        }

4 个答案:

答案 0 :(得分:1)

好的,我假设您有一个字符串输入,您要通过使用循环然后使用charAt(x)(x是您用来增加循环的数字)进行计数,然后进行比较。 / p>

仅检查charAt(x-1)是否也为I。如果是,则不要递增i。另外,您还要确保x>0否则将引发错误。

答案 1 :(得分:1)

您实际上已经很远了,您所要做的就是检查前一个字符。可以通过以下方式完成:

String sentence = "Test i two II three iIi";        
int iCounter = 0;
String iCount = "iI"; 
for (int j = 0; j < sentence.length(); j++){
    char current = sentence.charAt(j);
    char previous; //1
    if (j==0) { 
        previous = 'Z';  //2
    } else {
        previous = sentence.charAt(j-1); //3
    }
    if (iCount.indexOf(current) != -1 && iCount.indexOf(previous) == -1 ){ //4
        iCounter++;
   }
}

根据我的//标签,让我向您解释我做了什么

// 1我们创建一个新的char变量,保留前一个字符。
// 2因为String的第一个索引没有前面的字符,所以我们将其设置为随机的,不匹配的字符,以防止在开始时出错。在此示例中,我选择了Z
// 3如果有前一个字符,我们可以通过从j中减去1来得到它 // 4我们在if语句中检查iCount中当前字符是否,而iCount中先前的字符不是。如果是这种情况,计数器将增加。

运行上述代码后,结果将输出3

答案 2 :(得分:1)

请运行以下代码:

<div *ngFor="let user of user_data">
  {{user.name}} , age : {{user.age}}
</div>

输出:

2

以退出代码0结束的过程

答案 3 :(得分:-2)

您需要正则表达式和Java Pattern类(https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)。

在下面的示例中,我使用“ w”代替“ l”,因为它更容易区分。使用正则表达式定义一个模式,该模式将捕获字母的一个或多个连续出现的位置:w+,然后使用匹配器,计算匹配的次数。

String input = "wwowwee w w w";
Pattern p = Pattern.compile("w+");
Matcher matcher = p.matcher(input);
int count = 0;
while(matcher.find()) {
  count++;
}
System.out.println("Count: " + count);

或者,只需拆分字符串并计算拆分次数:

String input = "wwowwee w w w";
Pattern p = Pattern.compile("w+");
String[] tokens = p.split(input);
System.out.println("token count: " + tokens.length);

两者都能给出正确的结果。

编辑:这不会回答有关有条件地增加计数器的问题,但解决了该问题要解决的问题。