Java Arraylist有java.lang.IndexOutOfBoundsException?

编程入门 行业动态 更新时间:2024-10-19 06:18:53
本文介绍了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

(一世)); }

应该是:

}

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

索引: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?

本文发布于:2023-11-22 20:33:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618920.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Arraylist   Java   java   IndexOutOfBoundsException   lang

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!