为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我这显示是错的

public class HelloWorld {

    public static void main(String[] args) {

// 定义一个字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        

        // 出现次数

int num = 0;

        

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

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

{

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

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

                // 累加统计次数

num++; 

}

}

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

}

}


正在回答

4 回答

把那个i<=s.length();去掉=号

0 回复 有任何疑惑可以回复我~
//楼主的代码  
  
public class HelloWorld {  
    public static void main(String[] args) {  
        // 定义一个字符串  
        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";  
          
        // 出现次数  
        int num = 0;  
          
         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数  
        for (int i=0; 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:646)  
    at HelloWorld.main(HelloWorld.java:13)

如二楼所说,也如报错所示,是字符串边界溢出,只需要去掉等号即可,即将for循环中的"i<=s.length()"改为"i<s.length()"就好。

StringIndexOutOfBoundsException


0 回复 有任何疑惑可以回复我~

应该是i<s.length()

1 回复 有任何疑惑可以回复我~

想不通


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我这显示是错的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信