无缘无故地显示异常错误

时间:2016-03-30 18:16:14

标签: java exception-handling

我正在处理一个代码,在该代码中输入一个输入字符串并输入一个输入字符。代码将计算该字符串中该字符的出现百分比。代码如下:

import java.util.Scanner;
class apple{
    public static void main(String args[]){
        int i,j,l=0;
        float m;
        char k;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the String");
        String str = in.nextLine();
        j=str.length();
        System.out.println("Enter the character to be found");
        char s = in.next(".").charAt(0);
        for(i=0;i<=j;i++){
            k = str.charAt(i);
            if(k == s){
                l++;
            }
        }
        m= l/j;
        m=m*100;
        System.out.println("percent character in String is "+m);
    }
}

4 个答案:

答案 0 :(得分:2)

将循环更改为

for(i = 0 ;i < j ; i++)

否则,如果您的String的长度为4(因此最后一个索引为3),它将尝试访问索引4并抛出异常。

答案 1 :(得分:0)

你这样做:

for (i = 0; i <= j; i++) {

这是一个java.lang.StringIndexOutOfBoundsException:

因为您没有考虑元素从0变为lengt-1

你应该这样做:

for (i = 0; i < j; i++) {

答案 2 :(得分:0)

将您的for循环编辑为for (i=0;i<j;i++)。我们无法访问数组大小位置的元素,因为Java数组使用从0开始的索引

答案 3 :(得分:0)

String的第一个字符是'0',最后一个是yourString.length() - 1,所以将你的循环更改为

for( i = 0 ; i < j ; i++ ){
    k = str.charAt(i);
    if(k == s){
         l++;
    }
}

它会起作用;)