そのため、与えられた最後の課題を完了した後、そのコードを取得して、コマンド ライン引数からファイルからのデータの読み取りに変更するように指示されました。ファイルからデータを呼び出し、以前と同じことを行う関数のインターフェイスを持っているはずの部分を除いて、すべてうまくいきます。
現在、私のドライバー クラスのオブジェクト配列には、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);
}
}
}
編集 エラーを指摘してくれてありがとう、みんなありがとう、でも今は
スレッド「メイン」での例外 java.lang.NoSuchMethodError: メイン
これは、StudentDAO にメインがないためですか?
別の編集
@mprabhat本当にばかげたエラーを指摘してくれてありがとう、どうやってそれを見なかったのかまだわからない><
スキャナーがファイルからデータを読み取ろうとするときに問題が発生しました。
1 - src フォルダーにあるにもかかわらず、データ ファイルが見つからないというメッセージが表示されます。
2 - スキャナー ラインでもエラーが発生しました。ファイルに対してスキャナーを使用すべきではありませんか? ... DataInputStream を使用する必要がありますか?