用输入/输出写一个程序,让用户输入一些姓名和学号。每一个姓名和学号将加在文件里。用户通过输入"quit"来告诉系统整个列表已输入完毕。如果用户输完整个列表,程序将创建一个输出文件 studentno.dat
文件 studentno.dat 中的数据格式如:
  2004001,杨一
  2004002,张三
  2004003,李四

解决方案 »

  1.   

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    public class Test {
        
        public static void main(String args[]) throws IOException{
         Scanner scanner = new Scanner(System.in);
        
         String tempId = "";
         String tempName = "";
        
         int count = 0;//数组计数器
        
         Stu[] stuArray = new Stu[100];//声明一个能储存100学生信息的学生数组
        
         /*初始化数组*/
         for(int i = 0; i < stuArray.length; i++) {
       stuArray[i] = new Stu();
       }
            
         while(true){//循环设置数组中元素
        
             System.out.println("请输入学号: ");
             tempId = scanner.next();
            
             if(tempId.equals("quit")) {//学号为quit跳出
             break;
             }
            
         System.out.println("请输入姓名:");
         tempName = scanner.next();
        
            if(tempName.equals("quit")) {//姓名为quit跳出
             break;
             }
              
            stuArray[count].setId(tempId);//设置学号
            stuArray[count].setName(tempName);//设置姓名
           
            count++;//数组计数器加1
            
         }
         //字符流对象
         FileWriter fw = new FileWriter("c:/studentno.dat");
         BufferedWriter bw = new BufferedWriter(fw);
        
         for(int j = 0; j < count; j++) {//循环写入文件中
         bw.write(stuArray[j].getId() + "," + stuArray[j].getName());
         bw.newLine();
         }
        
         bw.close();//关闭流
         fw.close();
            
        }
    }class Stu {//学生信息类
    private String id;
    private String name;

    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    }
      

  2.   


    是不错……
    但在不知道输入个数的前提下,为什么要使用数组呢?还一大早全实例化了等着,呵呵……
    小改了一下:import java.io.*;
    import java.util.*;public class Test {
        
        public static void main(String args[]) throws IOException{
            Scanner scanner = new Scanner(System.in);
            
            String stuId, stuName;
            
            List<Stu> stuList = new ArrayList<Stu>();
            
            while(true){
                
                System.out.print("请输入学号: ");
                stuId = scanner.nextLine();
                if( "quit".equals( stuId ) )
                 break;
                
                System.out.print("请输入姓名:");
                stuName = scanner.nextLine();
                if( "quit".equals( stuName ) )
                 break;
                
                stuList.add( new Stu(stuId, stuName) );                       
            }
            //字符流对象
            FileWriter fw = new FileWriter("e:/studentno.dat");
            BufferedWriter bw = new BufferedWriter(fw);
            
            for(int j = 0; j < stuList.size(); j++) {//循环写入文件中
             Stu s = stuList.get(j);
                bw.write(s.getId() + "," + s.getName());
                bw.newLine();
            }
            
            bw.close();//关闭流
            
        }
    }class Stu {//学生信息类
        private String id;
        private String name;
        
        public Stu(String id, String name) {
    super();
    this.id = id;
    this.name = name;
    }
    public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
      

  3.   

    chiphuo得不错,  accp206更不错,顶....
      

  4.   

    l楼的构造FileWriter的时候设置boolean append=true是不是会更好?
      

  5.   

    import java.util.*;
    import java.io.*;public class T23 {

    public static void main(String[] args) throws Exception{
    Scanner sc = new Scanner(System.in);
    Student[] stuArr = new Student[100];
    String tempId ="";
    String tempName = "";
    int count = 0;
    for(int i =0 ;i<100 ;i++) {
    stuArr[i] = new Student();
    }

    while(true) {
    System.out.println("请输入姓名:");
    tempName = sc.next();
    if(tempName.equals("quit")) {
    break;
    }
    System.out.println("请输入学号:");
    tempId = sc.next();
    if(tempId.equals("quit")) {
    break;
    }
    stuArr[count].setName(tempName);
    stuArr[count].setSno(tempId);
    count++;
    }
    System.out.println(count);
    BufferedWriter br = new BufferedWriter(
    new FileWriter(new File("studentsno.dat"),true));
    for(int j= 0 ;j<count ;j++) {
    br.write(stuArr[j].getSno() + ":" + stuArr[j].getName());
    br.newLine();
    br.flush();
    }

    br.close();
    }
    }

    class Student {

    private String sno;

    private String name;

    public String getSno() {
    return sno;
    }

    public void setSno(String sno) {
    this.sno = sno;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }
    }BuffedWriter不flush写不了数据,整理了一下一楼的,呵呵
      

  6.   

    import java.io.*;public class IODemo {
    public static void main(String[] args)throws IOException{
    File f = new File("E:\\study\\studentno.dat");
    StringBuffer outer = new StringBuffer();
    FileWriter fw = new FileWriter(f);
    BufferedWriter bw = new BufferedWriter(fw);
    while(true){
    outer = new StringBuffer();
    System.out.println("Please input a no: ");
    String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
    StringBuffer strp = new StringBuffer(str);
    if(str.equals("quit")){
    break;
    }
    outer.append(strp);
    System.out.println("Please input a name: ");
    String str1 = new BufferedReader(new InputStreamReader(System.in)).readLine();
    StringBuffer str1p = new StringBuffer(str1);
    if(str1.equals("quit")){
    bw.write(outer.toString());
    break;
    }
    outer.append(new StringBuffer(","));
    outer.append(str1p);
    outer.append("\r\n");
    bw.write(outer.toString());
    }
    bw.close();
    fw.close();
    }
    }
      

  7.   

    流的关闭操作会自动flush的。
    所以这里可以放心。
      

  8.   

    public static void main(String[] args) throws IOException {
    Scanner scanner = new Scanner(System.in);
    FileWriter fw = new FileWriter("e:/studentno.dat");
    BufferedWriter bw = new BufferedWriter(fw);
    String stuId, stuName; while (true) { System.out.print("请输入学号: ");
    stuId = scanner.nextLine();
    if ("quit".equals(stuId))
    break; System.out.print("请输入姓名:");
    stuName = scanner.nextLine();
    if ("quit".equals(stuName))
    break;
    bw.write(stuId + "," + stuName);
    bw.newLine();
    } bw.close();// 关闭流 }