Java中的列表无法正常工作

Cod*_*ker 2 java eclipse list

我写了其中用户被赋予像选择一个简单的菜单驱动的列表程序1. To add an element to the list,2. To display an element at a particular index3. To remove an element from a particular index.我的源代码正确符合.但是,当我运行它时,我会得到一些很难弄清楚的奇怪错误.

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");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Main Class

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!");
    }

}

}
Run Code Online (Sandbox Code Playgroud)

这里,索引0和1已经包含2种元素RahulSam分别.现在,当我运行我的程序并选择Enter 1 To Add An Element并输入一个元素时Sam.现在,如果我尝试显示元素选择Enter 2 To Display An Element然后输入元素的索引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)
Run Code Online (Sandbox Code Playgroud)

运行时事件的完整顺序如下:

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)
Run Code Online (Sandbox Code Playgroud)

Hug*_*usa 5

执行getchoice方法时,您总是创建一个新方法Menu.你不应该这样做,并继续使用相同的实例Menu.

  • @LancePreston如果它有效,请接受答案给予信任. (2认同)