Java的ArrayList中得到了java.lang.IndexOutOfBoundsException? [英] Java Arraylist got java.lang.IndexOutOfBoundsException?
问题描述
我是一个普通的3D艺术家,从我的职业生涯转换,并开始学习编程。
我有与c106a单张#5个问题。
在code的作品,但我还是得到了一些错误日志在这里。
异常线程mainjava.lang.IndexOutOfBoundsException:指数:4,大小:4
在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
?
下面是我完全code:
进口acm.io. *;
进口acm.program.ConsoleProgram;
进口acm.util *。
进口java.io. *;
进口的java.util.ArrayList;
进口的java.lang。*;公共类UniqueNames扩展ConsoleProgram { 静态的ArrayList<串GT; meString =新的ArrayList<串GT;();
静态字符串输入; 公共静态无效storeUnique(字符串输入){
如果(!meString.contains(输入))
{
meString.add(输入);
}
} 公共静态无效showUnique(ArrayList的<串GT; meString){
的System.out.println(唯一名称列表包含:);
的for(int i = 0; I< = meString.size();我++){
的System.out.println(meString.get(I));
}
} 公共静态无效的主要(字串[] args){ 尝试{
InputStreamReader的流=新的InputStreamReader(System.in);
BR的BufferedReader =新的BufferedReader(流);
而(真){
的System.out.println(输入名称:);
字符串输入= br.readLine();
如果(input.equals())打破;
storeUnique(输入);
} {showUnique(meString);}
}
赶上(IOException异常五){
}
}
}
下面的行
的for(int i = 0; I< = meString.size();我++){
的System.out.println(meString.get(I));
}
应
的for(int i = 0; I< meString.size();我++){
的System.out.println(meString.get(I));
}
由于该列表的索引从零开始。
指数:4,大小:4详细解释。当你调用get(4)发生异常。
由于您的列表的大小4.所以,你可以访问的元素 GET(0),得到(1),得到(2),得到(3)。
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){
}
}
}
Here in the 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));
}
Because the index of the list starts from zero.
Index: 4, Size: 4 explains more. when you call get(4) exception occurs.
because your list have a size 4. So you can access the elements get(0),get(1),get(2),get(3).
这篇关于Java的ArrayList中得到了java.lang.IndexOutOfBoundsException?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!