Yanmo霍染 2021-10-28 20:07 采纳率: 88.9%
浏览 43
已结题

为什么不能进行循环?报错在第18行,显示java.util.NoSuchElementException: No line found


package StudentMannager;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentDemo {
    public static void main(String []args ) {
        ArrayList<Student> array=new ArrayList<Student>();
        while(true) {
            System.out.println("-----欢迎来到学生管理系统-----");
            System.out.println("1 添加学生");
            System.out.println("2 删除学生");
            System.out.println("3 修改学生");
            System.out.println("4 查看所有学生");
            System.out.println("5 退出");
            System.out.println("请输入你的选择:");
            Scanner sc=new Scanner (System.in);
            String line =sc.nextLine();
            switch(line) {
                case "1":{
                    addStudent(array);
                    break;
                }
                case "2":{
                    deleteStudent(array);
                    break;
                }
                case "3":{
                    updateStudent(array);
                    break;
                }
                case "4":{
                    findAllStudent(array);
                    break;
                }
                case "5":{
                    System.out.println("谢谢使用!");
                    System.exit(0);
                }
            }
            sc.close();
        }
    }
    public static void addStudent(ArrayList<Student> array) {
        Scanner sc=new Scanner(System.in);
        
        System.out.println("请输入学生学号:");
        String sid=sc.nextLine();
        System.out.println("请输入学生姓名:");
        String name=sc.nextLine();
        System.out.println("请输入学生年龄:");
        String age=sc.nextLine();
        System.out.println("请输入学生居住地:");
        String address=sc.nextLine();
        
        Student s=new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        array.add(s);
        System.out.println("添加学生成功!");
        sc.close();
    }
    public static void findAllStudent(ArrayList<Student> array) {
        if(array.size()==0) {
            System.out.println("无信息,请先添加信息再查询!");
        }
            else {
                System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");//\t即为tab
                for(int i=0;i<array.size();i++) {
                Student s=array.get(i);
                System.out.println(s.getSid()+"\t"+s.getName()+"\t"+s.getAge()+"岁\t\t"+s.getAddress());
            }
        }
    }
    public static void deleteStudent(ArrayList<Student> array) {
        Scanner sc=new Scanner (System.in);
        System.out.println("请输入你要删除的学生学号");
        String sid=sc.nextLine();
        for(int i=0;i<array.size();i++) {
            Student s=array.get(i);
            if(s.getSid().equals(sid)) {
                array.remove(i);
                break;
            }
            
        }
        System.out.println("删除学生成功!");
        sc.close();
    }
    public static void updateStudent(ArrayList<Student> array) {
        System.out.println("请输入要修改的学生学号:");
        Scanner sc=new Scanner (System.in);
        String sid=sc.nextLine();
        System.out.println("请输入学生新姓名:");
        String name=sc.nextLine();
        System.out.println("请输入学生新年龄:");
        String age=sc.nextLine();
        System.out.println("请输入学生新居住地址:");
        String address=sc.nextLine();
        
        Student s=new Student ();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        for(int i=0;i<array.size();i++) {
            Student student=array.get(i);
            if(student.getSid().equals(sid)) {
                array.set(i, s);
                break;
            }
        }
        System.out.println("修改学生成功!");
        sc.close();
    }
}

  • 写回答

1条回答 默认 最新

  • 云丶言 2021-10-28 21:18
    关注

    sc.close()注释掉即可,由于你这一行代码关闭System.in了导致下一次循环时无法使用输入操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题