所以我是一个完整的初学者,我想知道是否有可能有条件地增加计数器。我正在尝试计算句子中的字母“ 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++;
}
}
}
答案 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);
两者都能给出正确的结果。
编辑:这不会回答有关有条件地增加计数器的问题,但解决了该问题要解决的问题。