Java Arraylist有java.lang.IndexOutOfBoundsException? [英] Java Arraylist got java.lang.IndexOutOfBoundsException?

查看:254
本文介绍了Java Arraylist有java.lang.IndexOutOfBoundsException?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一名普通的3D艺术家,从我的职业生涯开始,开始学习编程。
我有一个c106a讲义#5的问题。



代码工作,但我仍然有一些错误日志。

 线程main中的异常java.lang.IndexOutOfBoundsException:Index:4,Size:4 
at java.util.ArrayList。 RangeCheck(ArrayList.java:547)
在java.util.ArrayList.get(ArrayList.java:322)
在UniqueNames.showUnique(UniqueNames.java:23)
在UniqueNames.main (UniqueNames.java:39)

为什么 Arraylist ,它可以自己扩展它的容量,仍然得到一个 OutOfBoundsException



这是我的完整代码:

  import acm.io. *; 
import acm.program.ConsoleProgram;
import acm.util。*;
import java.io. *;
import java.util.ArrayList;
import java.lang。*;

public class UniqueNames extends ConsoleProgram {

static ArrayList< String> meString = new ArrayList< String>();
static String input;

public static void storeUnique(String input){
if(!meString.contains(input))
{
meString.add(input);
}
}

public static void showUnique(ArrayList< String> meString){
System.out.println(Unique name list contains:); (int i = 0; i< = meString.size(); i ++){
System.out.println(meString.get(i));

}
}

public static void main(String [] args){

try {
InputStreamReader stream = new InputStreamReader 。在);
BufferedReader br = new BufferedReader(stream);
while(true){
System.out.println(Enter name:);
String input = br.readLine();
if(input.equals())break;
storeUnique(input);
}

{showUnique(meString);}
}
catch(IOException e){
}
}
}


解决方案

以下行:

$ b $对于(int i = 0; i <= meString.size(); i ++){
System.out.println(meString.get)的
$ b

 (一世)); 
}

应该是:



<对于(int i = 0; i< meString.size(); i ++){
System.out.println(meString.get(i)); pre>
}

这是因为列表的索引从零开始。

索引:4,大小:4 再说一遍。当您调用 get(4)时,会发生异常,因为您的列表的大小为4. get(4)将尝试访问列表中的第5个元素。



您可以访问的有效元素为 get(0) get(1) get(2) get(3) code>。


I'm a general 3D artist, switched from my career and started to learn programming. I've got a problem with c106a handout #5.

The code works, but I've still got some error log here.

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at UniqueNames.showUnique(UniqueNames.java:23)
at UniqueNames.main(UniqueNames.java:39)

Why does Arraylist, which can stretch its capacity on its own, still get an OutOfBoundsException?

Here's my full code:

import acm.io.*;
import acm.program.ConsoleProgram;
import acm.util.*;
import java.io.*;
import java.util.ArrayList;
import java.lang.*;

public class UniqueNames extends ConsoleProgram{

  static ArrayList<String> meString = new ArrayList<String>();
  static String input ;

    public static void storeUnique(String input){
        if (!meString.contains(input))
           {
            meString.add(input);
            }
    }

    public static void showUnique(ArrayList<String> meString){
        System.out.println("Unique name list contains:");
        for(int i=0 ;i<= meString.size() ;i++){
            System.out.println(meString.get(i));
          }
      }

    public static void main(String[] args){

             try{
                InputStreamReader stream = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(stream);
                   while (true){
                       System.out.println("Enter name:");
                       String input = br.readLine();
                       if (input.equals("")) break;
                       storeUnique(input);
                      }  

                  {showUnique(meString);}  
                }
             catch(IOException e){
                }
    }
}

解决方案

The following lines:

for (int i = 0; i <= meString.size(); i++) {
    System.out.println(meString.get(i));
}

should be:

for (int i = 0; i < meString.size(); i++) {
    System.out.println(meString.get(i));
}

This is because the index of the list starts from zero.

Index: 4, Size: 4 explains a little more. When you call get(4), an exception occurs because your list only has a size of 4. get(4) would attempt to access the 5th element in the list.

Valid elements you can access would be get(0), get(1), get(2), get(3).

这篇关于Java Arraylist有java.lang.IndexOutOfBoundsException?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆