首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误索引6超出了我的java代码中长度6的范围

错误索引6超出了我的java代码中长度6的范围
EN

Stack Overflow用户
提问于 2021-05-15 04:00:08
回答 2查看 3.1K关注 0票数 0

在我的代码中得到这个错误,并且不完全理解如何修复,试图解决我自己的编码问题。

线程“主”StringParenthesis.main(StringParenthesis.java:14)中的异常:索引6超出了长度6在java.lang.ArrayIndexOutOfBoundsException上的界限

代码语言:javascript
复制
public class StringParenthesis {

        public static void main (String[]args){
        String word = "recede";
        String[] list,list2 = new String[word.length()];
        
        list = word.toLowerCase().split("");
        String result = "";
            
            for(int i=1;i<list.length;i++) {
                for(int j=1; j<list.length;i++) {
                    
                    if(list[i].equalsIgnoreCase(list[j])){
                        
                        list2[i] = ")";
                        list2[j] = ")";
                    }
                }
            }
            
            for (int k=1; k<list2.length;k++) {
                if(list2[k]!=")") {
                    list2[k]="(";
                    result +=list2[k];
                }else
                    result +=list2[k];
                    
            }
            System.out.println(result);
        }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-15 06:16:58

我不明白您的代码的目的是什么,现在它只在每个list2字符中填充")“,以一种昂贵的方式多次迭代以寻找乐趣,请分享您的目标,以帮助您修复您的方法。

如果您的代码被隐藏了,您的代码就无法工作,因为:

首先:变量"i“、"j”和"k“必须以"0”而不是"1“开头,这样才能迭代整个数组。现在你从“后退”,"e“的第二个字母开始,而不是"r”。

第二:在使用“j”的嵌套for循环中,必须增加"j",而不是"i“。这是的主要原因。

第三:这不会造成任何错误,但也是错误的。在这一行中没有初始化list2。

代码语言:javascript
复制
String[] list, list2 = new String[word.length()];

你要在这个里面初始化它

代码语言:javascript
复制
list = word.toLowerCase().split("");

如果我们不这样做,那么你就可以从第一份作业中删除。不管代码什么都不做,它也可以这样做:

代码语言:javascript
复制
public class StringParenthesis {

  public static void main(String[] args) {
    String word = "recede";

    String[] list, list2 = new String[word.length()];

    list = word.toLowerCase()
               .split("");
    StringBuilder result = new StringBuilder();

    for (int i = 0; i < list.length; i++) {
      for (int j = 0; j < list.length; j++) {

        if (list[i].equalsIgnoreCase(list[j])) {

          list2[i] = ")";
          list2[j] = ")";
        }
      }
    }

    for (int k = 0; k < list2.length; k++) {
      if (list2[k] != ")") {
        list2[k] = "(";
        result.append(list2[k]);
      } else
        result.append(list2[k]);

    }
    System.out.println(result.toString());
  }

}
票数 2
EN

Stack Overflow用户

发布于 2021-05-15 06:47:13

我不明白您的优点,但是java中的数组和集合的索引是从0开始的,但是数组和集合的大小不是从0开始的,例如,如果我在列表中添加了三个元素,列表的大小是3,但是它有0,1,2索引。

代码语言:javascript
复制
public class StringParenthesis {

    public static void main (String[]args){
    
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
    
        System.out.println(list.size()); // 3
    
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    
    
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67543148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档