我必须使用Java编写用于类的代码,其中计算并打印出字母E的出现次数(包括这两种情况)。这就是我所拥有的。
String sVerse = "As we enter our centennial year we are still young ";
System.out.println(sVerse);
int len3 = sVerse.length();
int countE = 0;
for (int d = 0; d <= len3; d++){
char e = sVerse.charAt(d);
d = d + 1;
if (e == 'e' || e == 'E')
{
countE = countE + 1;
}
else
{
countE = countE;
}
}
System.out.println(countE);
代码运行,字符串输出,但是在字符串输出后,出现此错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: 1258
at java.lang.String.charAt(Unknown Source)
at Unit4plus.main(Unit4plus.java:125)
最佳答案
您正在循环中增加d
,这是不应该的-只需让for
循环来完成即可。另外,您应使用<
而不是<=
终止循环:
int countE = 0;
for (int d = 0; d < len3; d++) {
char e=sVerse.charAt(d);
if (e=='e' || e=='E') {
countE++;
}
}
但坦率地说,您可以流式传输字符串中的字符,以获得更优雅的解决方案:
long countE = sVerse.chars().filter(c -> c == 'e' || c == 'E').count();