字符串索引超出绑定异常,字符串索引超出范围

时间:2015-02-28 03:03:29

标签: java exception netbeans

所以,我写了一个简单的程序来输入字符串并计算总数。米 所以,这是我的代码

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

这个错误是什么以及如何将其删除?

5 个答案:

答案 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抛出异常,因为它没有数组中的那个索引