我写了其中用户被赋予像选择一个简单的菜单驱动的列表程序1. To add an element to the list,2. To display an element at a particular index和3. 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种元素Rahul和Sam分别.现在,当我运行我的程序并选择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)
执行getchoice方法时,您总是创建一个新方法Menu.你不应该这样做,并继续使用相同的实例Menu.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |