Java Getter和setter方法并读取txt文件

Java Getter和setter方法并读取txt文件,java,text,setter,getter,Java,Text,Setter,Getter,本质上,我在我的驱动程序类中读取一个文本文件,但是我在调用另一个类中的一个方法,并带有从另一个类中读取文本文件的指令,但是它不起作用。这是迄今为止我在驾驶课上学到的: import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class CourseGrade { static int numberOfStudents; private int numb

本质上,我在我的驱动程序类中读取一个文本文件,但是我在调用另一个类中的一个方法,并带有从另一个类中读取文本文件的指令,但是它不起作用。这是迄今为止我在驾驶课上学到的:

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

public class CourseGrade {
    static int numberOfStudents;
    private int numberOfAssignAndLabs;
    private int numberOfTestsAndQuiz;
    private static int patZyanteAttend = 3;
    static int patZyanteAttendScore = 0;

    public void setNumberOfAssignAndLabs() {
        numberOfAssignAndLabs = 21;
    }

    public int getNumberOfAssignAndLabs() {
        return numberOfAssignAndLabs;
    }

    public void setNumberOfTestsAndQuiz() {
        numberOfTestsAndQuiz = 4;
    }

    public int getNumberOfTestsAndQuiz() {
        return numberOfTestsAndQuiz;
    }

    public static void main(String[] args) {
        Student myStudent = new Student();

        Scanner scanner = new Scanner(System.in);
        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);
        }

        System.out.println("Name" + "\t" + "\t" + "Assignment Score" + "\t"
                + "Test Score");
        numberOfStudents = scanner.nextInt();

        for (int i = 0; i < numberOfStudents; i++) {

            myStudent.setFirstName();
            System.out.print(myStudent.getFirstName() + " ");

            myStudent.setLastName();
            System.out.print(myStudent.getLastName());

            myStudent.setHomeworkScore();
            System.out.print(myStudent.getHomeworkScore() + " ");

            myStudent.setTestScore();
            System.out.print(myStudent.getTestScore());

            myStudent.computeGrade();
            System.out.println(myStudent.getGrade());

            for (int l = 0; l < patZyanteAttend; l++) {
                int temp;
                temp = scanner.nextInt();
                patZyanteAttendScore += temp;
            }
        }

    }
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
公开课{
学生的静态智力;
私人国际电话号码;
私人智力测验;
私有静态int-patzyanteatt=3;
静态int-patZyanteAttendScore=0;
public void setNumberOfAssignAndLabs(){
AssignandLabs的数量=21;
}
public int getNumberOfAssignAndLabs(){
返回AssignandLabs的编号;
}
public void setNumberOfTestsAndQuike(){
numberoftests和quick=4;
}
public int getNumberOfTestsAndQuike(){
返回numberoftests和quick;
}
公共静态void main(字符串[]args){
学生myStudent=新学生();
扫描仪=新的扫描仪(System.in);
试一试{
扫描仪=新扫描仪(新文件(“grades.txt”);
}catch(filenotfounde异常){
系统输出
.println(“打开文件时出错。请确保与GradeCalculator.class位于同一文件夹中的grades.txt文件”);
系统出口(0);
}
System.out.println(“名称”+“\t”+“\t”+“作业分数”+“\t”
+“考试成绩”);
numberOfStudents=scanner.nextInt();
for(int i=0;i
这是我打电话给的班级:

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

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

    CourseGrade myCourseGrade = new CourseGrade();

    Scanner scanner = new Scanner(System.in);

    public Student() {
        homeworkScore = 0;
        testScore = 0;

    }

    public void setFirstName() {
        firstName = scanner.next();

    }

    public String getFirstName() {
        return firstName;
    }

    public void setLastName() {

        lastName = scanner.next();
    }

    public String getLastName() {
        return lastName;
    }

    public void setHomeworkScore() {
        int temp;
        for (int j = 0; j < myCourseGrade.getNumberOfAssignAndLabs(); j++) {
            temp = scanner.nextInt();
            homeworkScore += temp;
        }
    }

    public int getHomeworkScore() {
        return homeworkScore;
    }

    public void setTestScore() {
        int temp;
        for (int k = 0; k < myCourseGrade.getNumberOfTestsAndQuiz(); k++) {
            temp = scanner.nextInt();
            testScore += temp;
        }
    }

    public int getTestScore() {
        return testScore;
    }

    public void computeGrade() {

        if (homeworkScore <= 599 || testScore <= 149 || homeworkScore <= 719
                && testScore <= 179 || homeworkScore <= 779 && testScore <= 164
                || homeworkScore <= 659 && testScore <= 209) {
            letterGrade = "P";
        }

        if (homeworkScore >= 1140 && testScore >= 180 || homeworkScore >= 1080
                && testScore >= 195 || homeworkScore >= 960 && testScore >= 210
                || homeworkScore >= 900 && testScore >= 225
                || homeworkScore >= 840 && testScore >= 240
                || homeworkScore >= 780 && testScore >= 255
                || homeworkScore >= 720 && testScore >= 285) {
            letterGrade = "G";
        } else {
            letterGrade = "A";
        }

    }

    public String getGrade() {
        return letterGrade;
    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
公立班学生{
私有字符串名;
私有字符串lastName;
私人字符串字母等级;
私人int homeworkScore;
私人智力测验分数;
CourseGrade myCourseGrade=新CourseGrade();
扫描仪=新的扫描仪(System.in);
公立学生(){
homeworkScore=0;
testScore=0;
}
public void setFirstName(){
firstName=scanner.next();
}
公共字符串getFirstName(){
返回名字;
}
public void setLastName(){
lastName=scanner.next();
}
公共字符串getLastName(){
返回姓氏;
}
public void setHomeworkScore(){
内部温度;
对于(int j=0;j=840&&testScore>=240
||homeworkScore>=780&&testScore>=255
||homeworkScore>=720&&testScore>=285){
letterGrade=“G”;
}否则{
letterGrade=“A”;
}
}
公共字符串getGrade(){
返回等级;
}
}

无论出于何种原因,当我进入For循环时,程序终止

您的设置程序应该接受一个参数,以便它知道要设置什么值

例如,在学生中:

public void setFirstName(String fName) {
    firstName = fName;
}
根据
fName
方法参数的值设置
Student
类中的字段
firstname

main
调用该方法时,请包含正在读取的文件中的名称:

myStudent.setFirstName(scanner.next());
在学生课堂上你不需要扫描仪


更改所有设置器以获取参数,并使用
main
中的
Scanner
提供值。

是否收到错误消息?它仅打印System.out.println(“名称”+“\t”+“\t”+“作业分数”+“\t”+“测试分数”);,然后是nothingFYI:当在字符串中使用转义字符(“\n”、“\t”、…)时,您不必将该特殊字符与其余字符分开。您也可以写“姓名\t\t签名分数\t签名分数”。执行
scanner.nextInt()
行后,
numberOfStudents
的内容是什么?