问题遇到的现象和发生背景
建立学生管理系统 界面如下
欢迎来到学生管理系统
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
问题相关代码,请勿粘贴截图
import java.util.Scanner;
import java.util.ArrayList;
public class StudentSystem {
public static void main(String[] args) {
ArrayList<Sstudent> array=new ArrayList<>();
System.out.println("欢迎来到学生管理系统");
System.out.println("1.添加学生");
System.out.println("2.删除学生");
System.out.println("3.修改学生");
System.out.println("4.查看所有学生");
System.out.println("5.退出");
do {
System.out.println("请输入您要进行的操作:");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
if(i<5) {
switch(i){
case 1://添加学生
System.out.println("请输入您要添加的学生学号:");
Scanner sc1=new Scanner(System.in);
String no1=sc1.nextLine();
System.out.println("请输入您要添加的学生姓名:");
Scanner sc2=new Scanner(System.in);
String name1=sc2.nextLine();
System.out.println("请输入您要添加的学生年龄:");
Scanner sc3=new Scanner(System.in);
String age1=sc3.nextLine();
Sstudent s1=new Sstudent(no1,name1,age1);
array.add(s1);
System.out.println("已添加成功");
break;
case 2://删除学生
System.out.println("请输入要删除的学生学号:");
Scanner sc4=new Scanner(System.in);
String no2=sc4.nextLine();
Sstudent s2=array.get(i);
String d=s2.getNo();
for(int i2=0;i2<array.size();i2++) {
//得到学号并比较,学号正确则删除
if(no2.equals(d)) {
array.remove(array.get(i2));
}
else System.out.println("输入错误!");
}
break;
case 3: //修改学生
System.out.println("请输入您要修改的学生本来学号:");
Scanner sc5=new Scanner(System.in);
String no33=sc5.nextLine();
for(int i3=0;i3<array.size();i3++) {
Sstudent s33=array.get(i);
String dd=s33.getNo();
if(no33.equals(dd)) {
System.out.println("请输入修改后的学生学号:");
@SuppressWarnings("resource")
Scanner sc6=new Scanner(System.in);
String no3=sc6.nextLine();
System.out.println("请输入修改后的学生姓名:");
Scanner sc7=new Scanner(System.in);
String name3=sc7.nextLine();
System.out.println("请输入修改后的学生年龄:");
@SuppressWarnings("resource")
Scanner sc8=new Scanner(System.in);
String age3=sc8.nextLine();
Sstudent s3=new Sstudent(no3,name3,age3);
array.set(i,s3);
}
else System.out.println("输入错误!");
}
break;
case 4://查看所有学生
for(int i4=0;i4<array.size();i4++) {
Sstudent s4=array.get(i);
System.out.println(s4.getNo()+","+s4.getName()+","+s4.getAge());
}
break;
}
continue;
}else break;
}while(true);
}
}
运行结果及报错内容
只能运行操作1,操作2及以下都报错
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at StudentSystem.main(StudentSystem.java:42)
我的解答思路和尝试过的方法
编译没有出错,但是运行不了
我想要达到的结果
实现操作二至操作五