Java中的列表不工作
我编写了一个简单的菜单驱动列表程序,用户可以选择Java中的列表不工作,java,eclipse,list,Java,Eclipse,List,我编写了一个简单的菜单驱动列表程序,用户可以选择1。要将元素添加到列表中,,2。在特定索引处显示元素的步骤和3。从特定索引中删除元素的步骤。 我的源代码符合要求。但是,当我运行它时,我得到了一些很难识别的奇怪错误 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Menu { List list = new ArrayList(); String element; i
1。要将元素添加到列表中,,2。在特定索引处显示元素的步骤
和3。从特定索引中删除元素的步骤
。
我的源代码符合要求。但是,当我运行它时,我得到了一些很难识别的奇怪错误
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Menu {
List list = new ArrayList();
String element;
int choice;
int index;
public void tolist(){
list.add("Rahul");
list.add("Sam");
}
public void greet(){
System.out.println("Welcome!");
}
public int choice(){
System.out.println("Enter 1 To Add An Element");
System.out.println("Enter 2 To Display An Element");
System.out.println("Enter 3 To Delete An Element");
Scanner S = new Scanner(System.in);
choice = S.nextInt();
return choice;
}
public void add(){
/*System.out.println("Enter the Index Where The Element Is To Be Added");
Scanner S = new Scanner(System.in);
index=S.nextInt();*/
Scanner P = new Scanner(System.in);
System.out.println("Enter An Element");
element=P.nextLine();
list.add(element);
}
public void show(){
System.out.println("Enter The Index");
Scanner S=new Scanner(System.in);
index=S.nextInt();
System.out.println("The Element At The Index " +index +"Is " +list.get(index));
}
public void remove(){
System.out.println("Enter The Index To Remove An Element");
Scanner S=new Scanner(System.in);
index=S.nextInt();
list.remove(index);
System.out.println("The Element At The Index " +index +"Has Been Removed");
}
public void getchoice(){
Menu M=new Menu();
switch (choice){
case 1:
M.add();
break;
case 2:
M.show();
break;
case 3:
M.remove();
break;
default:
System.out.println("Invalid Choice");
}
}
}
Main类
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Menu S = new Menu();
S.greet();
Scanner L=new Scanner(System.in);
int y=0;
do{
S.choice();
S.getchoice();
System.out.println("Do you want to continue ?");
System.out.println("Enter 1 to continue or 2 to exit");
y=L.nextInt();
}while(y==1);
if(y==2){
System.out.println("Exiting system...");
System.out.println("GoodBye!");
}
}
}
这里,索引0和1已经分别包含2个元素Rahul
和Sam
。现在,当我运行我的程序并选择输入1以添加一个元素
并输入一个元素时,比如说Sam
。现在,如果我尝试显示元素,选择输入2以显示元素
,然后将元素的索引输入为0
,我应该得到元素Rahul
,我得到的是:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Menu.show(Menu.java:50)
at Menu.getchoice(Menu.java:72)
at Main.main(Main.java:13)
运行时事件的完整顺序如下所示:
Welcome!
Enter 1 To Add An Element
Enter 2 To Display An Element
Enter 3 To Delete An Element
1
Enter An Element
Sam
Do you want to continue ?
Enter 1 to continue or 2 to exit
1
Enter 1 To Add An Element
Enter 2 To Display An Element
Enter 3 To Delete An Element
2
Enter The Index
0
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Menu.show(Menu.java:50)
at Menu.getchoice(Menu.java:72)
at Main.main(Main.java:13)
当您执行getchoice
方法时,您总是在创建一个新的菜单
。您不应该这样做,并且继续使用相同的菜单实例
您是否使用了调试器来检查您认为列表中的两个元素是否实际存在?我怀疑它们是正确的,因为您的toList
方法从未被调用。@LancePreston如果有效,那么请接受答案以给予信任。我尝试单击勾号以接受答案。它变绿了一会儿,又变白了。“我不知道这是错的。”兰斯·普雷斯顿你需要等15分钟才能接受答案。在那之后你试过了吗?@HugoSousa:Done!:)