0

テキスト ファイルからデータを読み込もうとしていますが、うまく動作しません。これは私がこれまでに持っているものです

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

    public class Student {
        private String firstName;
        private String lastName;
        private int homeworkScore;
        private int testScore;
        private String letterGrade;
        private int numberOfStudents;

        public Student() {

            numberOfStudents = 0;
            homeworkScore = 0;
            testScore = 0;

        }

        public static void main(String[] args) {

            Scanner scanner = null;
            try {
                scanner = new Scanner(new File("grades.txt"));
            } catch (FileNotFoundException e) {
                System.out
                        .println("Error opening file. Please make sure that you have a grades.txt file in the same folder as GradeCalculator.class");
                System.exit(0);
            }
        }

        public void setNumberOfStudents() {
            Scanner scanner = new Scanner(System.in);
            numberOfStudents = scanner.nextInt();

        }

        public void setFirstName() {
            Scanner scanner = new Scanner(System.in);
            String firstName = scanner.next();
        }

        public void setLastName() {
            Scanner scanner = new Scanner(System.in);
            String lastName = scanner.next();
        }
    }

そして、これは私がこれまでに持っているドライバークラスです:

public class CourseGrade {

    public static void main(String[] args) {
        Student myStudent = new Student();
        myStudent.setNumberOfStudents();
        myStudent.setFirstName();
        myStudent.setLastName();
    }

}

ドライバー クラスを実行しても何も起こらないので、実際に必要な値が設定されているかどうかわかりません。エラー メッセージが表示されないため、ファイルが読み取られていることはわかっていますが、値が実際に設定されているかどうかはわかりません

4

3 に答える 3

1

実際には、スキャナーでファイルを反復処理していません。Scannerファイルでオブジェクトを初期化するだけです。

次のようなことをする必要があります:

 while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    //do stuff...
 }

質問のコメント セクションで指摘されたようにScanner、 Student クラスの main メソッドで初期化されていますが、これは間違っているようです。このファイルを読み取り、データに基づいて Student オブジェクトを構築する Student の静的メソッドを使用できます。

于 2013-10-29T17:54:08.577 に答える
0
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Student {
    private String firstName;
    private String lastName;
    private int homeworkScore;
    private int testScore;
    private String letterGrade;
    private int numberOfStudents;

    public Student() {

        Scanner scanner = null;
        try {
            scanner = new Scanner(new File("grades.txt"));
        } catch (FileNotFoundException e) {
            System.out
                    .println("Error opening file. Please make sure that you have a grades.txt file in the same folder as GradeCalculator.class");
            System.exit(0);
        }

        //Assumed file content is as expected
        this.numberOfStudents = scanner.nextInt();
        this.firstName = scanner.next();
        this.lastName = scanner.next();
    }
}

そして、次のドライバー クラスは、コンストラクターを呼び出すときに設定された値を出力します。

public class CourseGrade {

  public static void main(String[] args) {

    Student myStudent = new Student();
    //Your requirement is done by now
  }

}
于 2013-10-29T18:10:13.733 に答える