这里一直抛出一个异常,该怎么处理

来源:2-4 Java 中的 String 类常用方法 Ⅱ

Zhuliuer

2015-09-29 17:41


public class HelloWorld {

    public static void main(String[] args) {

// 定义一个字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        

        // 出现次数

int num = 0;

        

         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数

for (int i=1;i<=s.length();i++  )

{

            // 获取每个字符,判断是否是字符a

if ( s.charAt(i)=='a') {

                // 累加统计次数

num++; 

}

}

System.out.println("字符a出现的次数:" + num);

}

}

运行结果是:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 49
at java.lang.String.charAt(String.java:658)
at HelloWorld.main(HelloWorld.java:13)

写回答 关注

2回答

  • 异新世
    2015-09-29 18:50:01
    已采纳

    String s角标越界, for (int i=1;i<=s.length();i++  ), s.length()是字符个数,角标是从0开始,所以s的最大角标是s.length()-1, 所以s.charAt(i),取到s.charAt(s.length())时越界,抛出java.lang.StringIndexOutOfBoundsException,即String索引越界异常

    Zhuliu...

    非常感谢!

    2015-10-01 11:07:35

    共 1 条回复 >

  • donlv
    2015-09-29 19:24:01

    同上,下标从0开始。;for (int i=1;i<=s.length();i++  )改为for(int i=0;i<s.length-1;i++)

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题