Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符数组中的索引超出范围错误_Java_Arrays_Char_Return - Fatal编程技术网

Java 字符数组中的索引超出范围错误

Java 字符数组中的索引超出范围错误,java,arrays,char,return,Java,Arrays,Char,Return,请允许我练习一些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;

请允许我练习一些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));
  }
}
课堂挑战{
静态最终整数n=256;
静态字符[]计数=新字符[n];
字符串str;
静态void字符计数器(字符串str){
对于(int i=0;i

如果输入字符串不满足
计数[str.charAt(i)]==1
。然后pos值将保持-1->这将导致返回语句出错

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

您尚未指定在这种情况下该方法应该执行的全部操作,但如果可以接受返回空字符串,则可以将return语句更改为:

if (pos < 0) return "";
return Character.toString(str.charAt(pos));
if(pos<0)返回“”;
返回字符.toString(str.charAt(pos));

您能否提供一个示例输入,该示例输入的
索引超出范围
错误?
if (pos < 0) return "";
return Character.toString(str.charAt(pos));