【问题标题】:index out of range error in character array字符数组中的索引超出范围错误
【发布时间】:2020-12-05 04:46:12
【问题描述】:

请我练习一些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));
  }
}

【问题讨论】:

  • 您能否提供引发index-out-of-range 错误的示例输入?

标签: java arrays char return


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    if(count[str.charAt(i)] == 1){
            pos = i;
            break;
          }
    

    如果您的输入字符串不满足count[str.charAt(i)] == 1。然后 pos 值将保持 -1 -> 它会导致 return 语句出错

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 2013-09-25
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多