所以,我写了一个简单的程序来输入字符串并计算总数。米 所以,这是我的代码
for(int i=0; i<=n; i++)
{
if((str.charAt(i)=='m'))
{
} else {
count++;
}
}
System.out.println("The total number of m is "+count);
其中n=str.length();
和str是我已经采取的一个字符串,但是这个错误不断出现
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 14
at java.lang.String.charAt(String.java:646)
at javaapplication.JavaApplication.main(JavaApplication.java:28
Java Result: 1
这个错误是什么以及如何将其删除?
答案 0 :(得分:5)
length() == n
的字符串具有从0到n-1的有效索引;
更改
for(int i=0; i<=n; i++)
到
for(int i=0; i<n; i++)
答案 1 :(得分:0)
记住字符串从0索引到StringName.length() - 1.因为你正在迭代StringName()。length - 你实际上正好在&#34; bounds&#34;之外。导致错误的字符串。你需要确保你的索引在你的for循环中是正确的。
答案 2 :(得分:0)
String变量中的字符从0索引开始。
此外,如果您想计算小写字母m
的总体外观,请将count++
移至if block statement
。
n=str.length() - 1;
for(int i=0; i<=n; i++)
{
if((str.charAt(i)=='m'))
{
count++;
}
}
System.out.println("The total number of m is "+count);
答案 3 :(得分:0)
想象一下,你有以下长度为7 的数组:
-----------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | <-- Array index
-----------------------------
|10 |20 |30 |40 |50 |60 |70 | <-- Array values
-----------------------------
在这种情况下,for(int i=0; i<=n; i++)
的for循环将循环 8次从索引 0迭代<7 。
但索引 7 的数组元素不存在,因此提供outOfBoundsException
。
for(int i=0; i<n; i++)
的for循环将循环 7次从 0迭代<6 。
答案 4 :(得分:0)
charat与index一起工作(从n到1工作),但在你的for中你得到的条件你有i = n,在这种情况下charat抛出异常,因为它没有数组中的那个索引