import java.util.*;
import java.io.*;
public class gfdgd
{
    public static void main(String[] args)
    {
        ArrayList<Students> staff1=new ArrayList<Students>();
        Books [] staff2;
        int num = 0;
        String name1;
        Scanner in = new Scanner(System.in);
        System.out.println("请输入共有多少本书:");
        int number = in.nextInt();
        System.out.println("请输入数的名称和编号");
        for(int i=0;i<number;i++)
        {
            String Bname1 = in.next();
            int Bnumber1 = in.nextInt();
            String name = "null";
            String yon ="NO";
            staff2[i]=new Books(Bname1,Bnumber1,name,yon);
            //staff2.add(new Books(Bname1,Bnumber1,name,yon));
        }
        try
        {
            PrintWriter out = new PrintWriter(new FileWriter("book.txt"));
            writeData(staff2,out);
            out.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
            System.out.println("1.输入借书人的姓名,学号,借书的编号");
            System.out.println("2.显示书的信息");
            System.out.println("3.显示学生信息");
            int choice1=in.nextInt();
            switch(choice1)
            {
                case 1:
                    name1 = in.next();
                    int number1 = in.nextInt();
                    int Bnumber = in.nextInt();
                    staff1.add(new Students(name1,number1,Bnumber));
                    for(Books e:staff2)
                    {
                        if(e.getBooknumber()==Bnumber)
                        {
                            e.name=name1;
                            e.yon="YES";
                        }
                        else
                        System.out.println("没有这本书");
                    }
                   num++;
                   break;
               case 2:
                   if(num!=0)
                   {
                        for(Books e:staff2)
                        {
                           System.out.println("书名:"+e.Bname+"编号:"+e.Bnumber+"借书人名:"+e.name+";"+e.yon);
                        }
                   }
                   else
                        System.out.println("还没有人借书");
                   break;
               case 3:
                   if(num!=0)
                   {
                       for(Students e:staff1)
                       {
                            System.out.println("姓名:"+e.name+"学号:"+e.number+"所借书编号:"+e.Bnumber);
                       }
                   }
                   else
                   {System.out.println("还没有人借书");}
                   break;
            }
        static void writeData(Books[] staff2,PrintWriter out) throws IOException
        {
            out.println(staff2.length);
            for(Books e:staff2)
            e.writeData(out);
        }
    }
}
class Students
{
    public Students(String n,int m,int b)
    {
        name = n;
        number = m;
        Bnumber = b;
    }
    public String getName()
    {
        return name;
    }
    public int getNumber()
    {
        return number;
    }
    public int getBooknumber()
    {
        return Bnumber;
    }
    public String name;
    public int number;
    public int Bnumber;
}
class Books
{
    public Books(String b,int m,String n,String y)
    {
        Bname = b;
        Bnumber = m;
        name = n;
        yon=y;
    }
    public String getBookname()
    {
        return Bname;
    }
    public int getBooknumber()
    {
        return Bnumber;
    }
    public String getName()
    {
        return name;
    }
    public String getYon()
    {
        return yon;
    }
    public void writeData(PrintWriter out) throws IOException
    {
        out.println(Bname+"|"+Bnumber+"|"+name+"|"+yon);
    }
    public String Bname;
    public int Bnumber;
    public String name;
    public String yon;
}
----------------------------------------------------------------------------------------
以上是程序源码,要求将Books,和Students的数据写入.txt的文件,但是程序在        
try
        {
            PrintWriter out = new PrintWriter(new FileWriter("book.txt"));
            writeData(staff2,out);
            out.close();
        }
这里编译就通过不了,希望大家帮忙找下程序错在哪里了,谢谢

解决方案 »

  1.   

    楼主这段程序哪弄来的 问题很多啊
    1、方法定义不能在方法内部,所以你
    static void writeData(Books[] staff2,PrintWriter out) throws IOException
    这个方法要定义在main方法的外面2、staff2数组没有初始化,可以这样改
      Scanner in = new Scanner(System.in);
      System.out.println("请输入共有多少本书:");
      int number = in.nextInt();
      staff2 = new Books[number];
      

  2.   

    我改的,你看看,能过的,写代码最好规范点
    package app;import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Scanner;public class gfdgd {
    public static void main(String[] args)
      {
      ArrayList<Students> staff1=new ArrayList<Students>();
      int num = 0;
      String name1;
      Scanner in = new Scanner(System.in);
      System.out.println("请输入共有多少本书:");
      int number = in.nextInt();
      Books [] staff2=new Books[number];
      System.out.println("请输入数的名称和编号");
      for(int i=0;i<number;i++)
      {
      String Bname1 = in.next();
      int Bnumber1 = in.nextInt();
      String name = "null";
      String yon ="NO";
      staff2[i]=new Books(Bname1,Bnumber1,name,yon);
      //staff2.add(new Books(Bname1,Bnumber1,name,yon));
      }
      try
      {
      PrintWriter out = new PrintWriter(new FileWriter("c:/book.txt"));
      writeData(staff2, out);
      out.close();
      }
      catch(Exception e)
      {
      e.printStackTrace();
      }
      System.out.println("1.输入借书人的姓名,学号,借书的编号");
      System.out.println("2.显示书的信息");
      System.out.println("3.显示学生信息");
      int choice1=in.nextInt();
      switch(choice1)
      {
      case 1:
      name1 = in.next();
      int number1 = in.nextInt();
      int Bnumber = in.nextInt();
      staff1.add(new Students(name1,number1,Bnumber));
      for(Books e:staff2)
      {
      if(e.getBooknumber()==Bnumber)
      {
      e.name=name1;
      e.yon="YES";
      }
      else
      System.out.println("没有这本书");
      }
      num++;
      break;
      case 2:
      if(num!=0)
      {
      for(Books e:staff2)
      {
      System.out.println("书名:"+e.Bname+"编号:"+e.Bnumber+"借书人名:"+e.name+";"+e.yon);
      }
      }
      else
      System.out.println("还没有人借书");
      break;
      case 3:
      if(num!=0)
      {
      for(Students e:staff1)
      {
      System.out.println("姓名:"+e.name+"学号:"+e.number+"所借书编号:"+e.Bnumber);
      }
      }
      else
      {System.out.println("还没有人借书");}
      break;
      } 
      }
    static void writeData(Books[] staff2,PrintWriter out) throws IOException
      {
      out.println(staff2.length);
      for(Books e:staff2)
      e.writeData(out);
      }
    }class Students {
    public String name;
    public int number;
    public int Bnumber;
    public Students(String n, int m, int b) {
    name = n;
    number = m;
    Bnumber = b;
    } public String getName() {
    return name;
    } public int getNumber() {
    return number;
    } public int getBooknumber() {
    return Bnumber;
    }
    }class Books {
    public String Bname;
    public int Bnumber;
    public String name;
    public String yon; public Books(String b, int m, String n, String y) {
    Bname = b;
    Bnumber = m;
    name = n;
    yon = y;
    } public String getBookname() {
    return Bname;
    } public int getBooknumber() {
    return Bnumber;
    } public String getName() {
    return name;
    } public String getYon() {
    return yon;
    } public void writeData(PrintWriter out) throws IOException {
    out.println(Bname + "|" + Bnumber + "|" + name + "|" + yon);
    }
    }
      

  3.   

    方法定义不能在方法内部,所以你
    static void writeData(Books[] staff2,PrintWriter out) throws IOException
    这个方法要定义在main方法的外面