因此,在完成给我的最后一项任务后,我被指示获取该代码并将其从命令行参数更改为从文件中读取数据。一切都很好,除了我应该有一个函数接口的部分,该函数从文件中调用数据,然后做和以前一样的事情。
现在,我的驱动程序类中的对象数组应该被分配由 DAO 类获取的值。DAO 类基于接口。驱动程序类对我尖叫,我创建的对象必须从 DAO 类中的静态函数分配,但该方法不能是静态的......
这次我错过了什么?...
界面:
public interface ScanTextFile {
    public Object[] readTextData() throws FileNotFoundException;
}
DAO类:
public class StudentDAO implements ScanTextFile {
    public Object[] readTextData() throws FileNotFoundException {
        Student[] studentRecord = new Student[3];
        String dataFileName = "data.txt";
        int numberOfRows = 0;
        File dataFile = new File(dataFileName);
        Scanner scan = new Scanner(dataFile);
        int i = 0;
        String delim = "\\|";
        // checks number of rows in data file, making sure there are 3 total
        for(i = 0; scan.hasNextLine(); i++){
            numberOfRows++;
        }
        if(numberOfRows < 3){
            System.err.format((numberOfRows) + " argument(s) - expected 3");
            System.exit(0);
        } else if(numberOfRows > 3){
            System.err.format((numberOfRows) + " arguments - expected 3");
            System.exit(0);
        }
        for(i = 0; i < numberOfRows; i++){
            if(scan.hasNextLine()){
                String temp = scan.nextLine();
                String[] tempData = new String[4];
                Student tempStudent = null;
                for(i = 0; i < tempData.length ; i++){
                    tempData = temp.split(delim);
                }
                System.out.println("DEBUG *** Finished extracting data, creating object...");
                System.out.println("DEBUG Student Data = [�" + temp + "]");
                GregorianCalendar date = new GregorianCalendar();
                try {
                    date = DateUtil.convertFromDMY(tempData[3]);
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
                tempStudent = new Student(tempData[0], tempData[1], tempData[2], date);
                studentRecord[i] = tempStudent;
            }
        }
        return studentRecord;
    }
}
司机等级:
public class Lab3 { 
    public void main(String[] args) throws ParseException, FileNotFoundException{
        Student[] allData = new Student[3];
        allData = (Student[]) StudentDAO.readTextData();
        System.out.println("");
        System.out.println("DEBUG *** Student Objects created, displaying all Students...\n");
        for(Student s : allData){
            Print.print(s);
        }
    }
}
编辑 感谢您指出该错误,谢谢大家,但现在我得到了
线程“main”中的异常 java.lang.NoSuchMethodError: main
那是因为StudentDAO没有main吗?
另一个编辑
@mprabhat 感谢您指出一个非常愚蠢的错误,仍然不知道我怎么没看到><
现在,当扫描仪尝试从文件中读取数据时,我遇到了一个问题。
1 - 说找不到数据文件,即使它在我的 src 文件夹中。
2 - 扫描仪线上也有错误,我不应该在文件上使用扫描仪吗?我应该使用... DataInputStream 吗?