目的:创建一个读取已知文档,并对不良输入信息做出反映的程序。
文档样例:1034(编号)
         Heping Park(地址)
         Xiao Ming(住户)         1021
         Bejing Road
         Vacant(无住户)
每个信息独立一行,我觉得可能存在的不良输入信息是指出现空行。(如果高手认为有其他可能不良输入信息情况请指出,谢谢。)
简易程序表达及觉得存在的问题。
“DBReader class"
package checker;//觉得import项目过多,希望帮忙去掉不用项
import java.io.*;
import java.util.*;
import java.lang.*;//下面一段为基本结构,可跳过
public class DBReader extends Apartment{
    
    private String filename;
    
    public DBReader(String filename_p) {
        filename = filename_p;
    }
    
    public int readDB() {
        String curLine = null;
        int calculater = 1;
        try {
            File myFile = new File(filename);
            FileReader freader = new FileReader(myFile);
            BufferedReader buf = new BufferedReader(freader);//请高手帮忙看下下段程序的可行性,如果有需要补充的地方请指出
              while ((curLine = buf.readLine()) != null) {
                calculater++;
                if (curLine != "" && calculater >3){
                    calculater = 1;
                } else if (curLine == "" && calculater > 3) {
                    Apartment newApt = new Apartment(int id_, String address_, String occupant_);//这地方有问题,请高手帮忙指正下
                    LinkedList<Apartment> apartmentList = new LinkedList<Apartment>();//这样创造LinkedList有问题吗?
                    apartmentList.add(newApt);//是不是把文档中2块信息分别储存到不同的Apartment类中了?
                } else {//下面这种处理空行的方式可行吗?需要补充什么吗?
                    switch (calculater) {
                        case 1:
                            if (curLine == "")
                                System.out.println("ID is needed.");
                            else {
                                int id = Integer.parseInt(curLine);}
                            break;
                        case 2:
                            if (curLine == "")
                                System.out.println("Address is needed.");
                            else {
                                String address = curLine;}
                            break;
                        case 3:
                            if (curLine == "")
                                System.out.println("Occupant is needed.");
                            else{
                                String occupant = curLine;}
                            break;
                        }
                         }
//其他
              buf.close();
            freader.close();
            }
     }
}下面是Apartment类的设计的相关部分
package checker;//是不是又有啥用不到的import了?
import java.lang.*;public class Apartment {
    private int id;
    private String address;
    private String occupant;    public Apartment(int id_, String address_, String occupant_) {
        id = id_;
        address=address_;
        occupant=occupant_;
    }//为什么上面创建使用new Apartment(..)命令时候会出现问题?不是main程序不可以使用吗?小弟第一次发帖子,请高手指点,谢谢了!

解决方案 »

  1.   

    Apartment newApt = new Apartment(int id_, String address_, String occupant_);//这地方有问题,请高手帮忙指正下
    你这句话是要实力化一个Apartment对象,但是构造方法里面传递应该是实际的参数,不应该在有参数定义了
    也就是说你改成Apartment newApt = new Apartment(id_, address_, occupant_);
    这样再看看
      

  2.   

    感谢LS的回复,我重新试运行了一下,系统提示错误为“在DBReader中访问了Apartment的private项”。这种情况应该如何处理呢?而且我想在文档读取的过程中将一段完整的Apartment信息分别放入LinkedList中,因为之后还要可执行添加、删除、修改Apartment的信息。哪位高手能指点一下LinkedList的存储及修改的问题,能给几条实用的命令吗?谢谢大家了!
      

  3.   

        private int id; 
        private String address; 
        private String occupant; =》    int id; 
        String address; 
        String occupant; 
      

  4.   

    谢谢您,您那个给女儿盖楼的帖子不知道怎么的进不去了。在这里祝福你和你女儿吧。如果Apartment的变量不用private限定的话会不会造成数据混乱呢?好象任何类都可以访问得到并可以直接改动其变量,我是新手,没试过这种情况。还有我写的程序有没有需要补充的情况呢?LinkedList的创建和赋值的方法对吗?谁能帮忙给个网站,哪里能查找到LinkedList的相关命令的。谢谢大家了!
      

  5.   

    系统仍然提示需要".class"
    需要')'谁知道是哪地方出错了吗?谢谢.