System.out.print("请输入一串字符串:");        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();        char[] ch = str.toCharArray();        int letter = 0;
        int space = 0;
        int digit = 0;
        int others = 0;        for(int i = 0; i <=ch.length; i++){
            if(Character.isLetter(ch[i])){
                letter++;
            }else if(Character.isSpaceChar(ch[i])){
                space++;
            }else if(Character.isDigit(ch[i])){
                digit++;
            }else{
                others++;
            }
        }        System.out.println("该字符串中含有英文字符:"+letter);
        System.out.println("含空格:"+space);
        System.out.println("含数字:"+digit);
        System.out.println("含其他字符:"+others);运行结果是
run:
请输入一串字符串:dw35y7k8l0]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
        at myjava.Main.main(Main.java:30)
Java Result: 1
请问是怎么回事啊?能否帮我解释一下

解决方案 »

  1.   

    for(int i = 0; i <=ch.length; i++){
    下标最多只能访问到ch.length-1,所以一般改为:
    for(int i = 0; i < ch.length; i++){
    你喜欢的话也可以改为:
    for(int i = 0; i <=ch.length-1; i++){
      

  2.   

    for(int i = 0; i <=ch.length; i++){
    --->
    for(int i = 0; i <ch.length; i++){
      

  3.   

    for(int i = 0; i <=ch.length; i++)你的数组越界了 length是这个字符串的长度,而你从0开始最多能访问到length-1个,这个估计学计算机的人都会明白的,给分吧 改成for(int i = 0; i <ch.length; i++)