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!:)