老坛酸菜吃鸭子 2022-03-19 23:00 采纳率: 83.3%
浏览 38
已结题

建立学生管理系统,switch-case语句执行出错

问题遇到的现象和发生背景

建立学生管理系统 界面如下
欢迎来到学生管理系统
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)

我的解答思路和尝试过的方法

编译没有出错,但是运行不了

我想要达到的结果

实现操作二至操作五

  • 写回答

1条回答 默认 最新

  • 笑霸final Java领域优质创作者 2022-03-20 00:05
    关注

    还是把具体的操作封装一下吧

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月7日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。