遁去一 2021-09-08 01:41 采纳率: 100%
浏览 50
已结题

为什么我的代码始终不能写入文件中?求大家看看有什么问题嘛?



```java
package testStudentForIO;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class StudentDemo {
    public static void main(String[] args) throws Throwable {
        
        ArrayList<Student> array = new ArrayList<Student>();
        String fileName = "Student.txt";
        
        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、退出系统!");
            
            Scanner sc =new Scanner(System.in);
            System.out.println("请输入您要进行的操作");
            String number = sc.nextLine();
            
            switch(number){
            case "1":
                findStudent(fileName);
                break;
            case "2":
                addStudent(fileName);
                break;
            case "3":
                changeStudent(fileName);
                break;
            case "4":
                deleteStudent(fileName);
                break;
            case "5":
                System.out.println("感谢您的操作!再见!");
                System.exit(0);
                break;
            default:
                    System.out.println("对不起,您的输入有误,请重新输入:");
                break;
            }
            
            
            
        }
    }
    
    //从文件读取到集合
    public static void arrayToFile(String fileName,ArrayList<Student> array) throws IOException{
        
        //ArrayList<Student> array = new ArrayList<Student>();
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        
        String line;
        while((line = br.readLine()) != null){
            String[] atr = new String[1024];
            atr = line.split(",");
            Student s = new Student();
            
            s.setId(atr[0]);
            s.setName(atr[1]);
            s.setAge(atr[2]);
            s.setAddress(atr[3]);
            
            array.add(s);
            
            
        }
        br.close();
        
    }
    
    //从集合写入到文件
    public static void fileToArray(String fileName, ArrayList<Student> array) throws IOException{
        
        BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
        
        for (int i = 0; i < array.size(); i++) {
            Student s = new Student();
            s = array.get(i);
            StringBuilder sb = new StringBuilder();
            sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
            
            bw.write(sb.toString());
            bw.newLine();
            bw.flush();
        }
        bw.close();
    }
    
    //查看所有学生:
    public static void findStudent(String fileName) throws IOException{
        
        ArrayList<Student> array = new ArrayList<Student>();
        arrayToFile(fileName,array);
        
        if(array.size() == 0){
                System.out.println("对不起,当前系统无学生信息!");
                return;
            }else{
                System.out.println("学号,姓名,年龄,居住地");
                for (int j = 0; j < array.size(); j++) {
                    Student s = array.get(j);
                    System.out.println(s.getId()+","+s.getName()+","+s.getAge()+","+s.getAddress());
                    
                }
            }
    }
    
    //添加学生信息
    public static void addStudent(String fileName) throws IOException{
        
        ArrayList<Student> array = new ArrayList<Student>();
        arrayToFile(fileName,array);
        
        Scanner sc = new Scanner(System.in);
        
        String id;
        
        while(true){
            System.out.println("请输入学生学号:");
            id = sc.nextLine();
            
            boolean flag = false;
            for (int i = 0; i < array.size(); i++) {
                Student s = array.get(i);
                
                if(s.getId().equalsIgnoreCase(id)){
                    flag = true;
                    break;
                }
            }
            
            if(flag){
                System.out.println("对不起该学号已被占用,请重新输入!");
            }
            break;
        }
        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.setId(id);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        array.add(s);
        
        arrayToFile(fileName,array);
        
        System.out.println("添加学生成功!");
        
        
        
        
    }
    
    //修改学生信息:
    public static void changeStudent(String fileName) throws IOException{
        

        ArrayList<Student> array = new ArrayList<Student>();
        arrayToFile(fileName,array);
        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要修改的学生学号:");
        String id = sc.nextLine();
        
        while(true){
            
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Student s = new Student();
                s = array.get(i);
                
                if(s.getId().equalsIgnoreCase(id)){
                    index = i;
                    break;
                }
                
            }
            
            if(index == -1){
                System.out.println("对不起没有找到该学号");
                return;
            }else{
                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.setId(id);
                s.setName(name);
                s.setAge(age);
                s.setAddress(address);
                
                array.set(index, s);
                
                arrayToFile(fileName,array);
                
                System.out.println("添加学生成功!");
                
            }
            
        }
        
    }
    
    //删除学生信息
    public static void deleteStudent(String fileName) throws IOException{
        ArrayList<Student> array = new ArrayList<Student>();
        arrayToFile(fileName,array);
        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要修改的学生学号:");
        String id = sc.nextLine();
        
        while(true){
            
            int index = -1;
            for (int i = 0; i < array.size(); i++) {
                Student s = new Student();
                s = array.get(i);
                
                if(s.getId().equalsIgnoreCase(id)){
                    index = i;
                    break;
                }
                
            }
            
            if(index == -1){
                System.out.println("对不起没有找到该学号");
                return;
            }else{
                
                
                array.remove(index);
                
                arrayToFile(fileName,array);
                
                System.out.println("添加学生成功!");
                
            }
            
        
    }
    
    
    
    }    
    
    
    
}


```

  • 写回答

2条回答 默认 最新

  • stacksoverflow 2021-09-08 06:54
    关注

    166行
    arrayToFile改成fileToArray

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月8日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装