首页 > 解决方案 > 字符数组中的索引超出范围错误

问题描述

请我练习一些java问题。我正在尝试以整数返回一个不重复的字符。我已经编写了我的代码,它适用于某些字符串,但有些字符串会导致索引超出范围错误。我不知道我在哪里做错了这是我的代码:

class Challenge {
  static final int n = 256;
  static char[] count = new char[n];
  String str;
  
  static void charCounter( String str ) {
    for(int i = 0; i < str.length(); i++){
      count[str.charAt(i)]++;
    }
  }
  
  public static String firstNonRepeatingLetter( String str ) {
    charCounter(str);
    int pos = -1, i;
    for(i = 0; i < str.length(); i++){
      if(count[str.charAt(i)] == 1){
        pos = i;
        break;
      }
    }
    return Character.toString(str.charAt(pos));
  }
}

标签: javaarrayscharreturn

解决方案


您还没有考虑在所有字母重复的情况下会发生什么,例如字符串“ABBA”。

在这种情况下,您还没有完全指定该方法应该做什么,但是如果可以接受返回空字符串,您可以将 return 语句更改为:

if (pos < 0) return "";
return Character.toString(str.charAt(pos));

推荐阅读