当我想返回空字符时,我得到java.lang.ArrayIndexOutOfBoundsException:3

时间:2019-02-25 13:28:43

标签: java hashset

我尝试编码提供第一个可重现字符的方法 但是当字符串没有任何内容时,我会收到此错误:

java.lang.ArrayIndexOutOfBoundsException: 3

代码:

static char firstReccuring(char str[]){
    HashSet<Character> map = new HashSet<>();

    for(int i=0; i<=str.length; i++ ) {
        char ch = str[i];
        if(map.contains(ch)) {
            return ch;
        }else {
            map.add(ch);
        }
    }

    return '0';
}

public static void main(String[] args) {
    String str = "abc";
    char[] arr = str.toCharArray();
    System.out.println(firstReccuring(arr));

}

2 个答案:

答案 0 :(得分:1)

i<=str.length变成i<str.length 您的字符串只有三个字符,这意味着数组中的最大索引为2

答案 1 :(得分:1)

for(int i=0; i<=str.length; i++ ) {`

删除相等项,因为如果字符串的长度为n,则最大可访问索引为n-1