基本上,我正在我的驱动程序类中读取一个文本文件,但是我正在从另一个类调用一个方法,并从另一个类的文本文件中读取指令,但它只是不起作用。这是我目前在我的驱动程序类中所拥有的:
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;
}
}
}
}
这是我正在打电话的课程:
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;
}
}
无论出于何种原因,当我进入for循环时程序终止
答案 0 :(得分:1)
你的setter应该带一个参数,因此它知道要设置什么值
例如,在学生:
public void setFirstName(String fName) {
firstName = fName;
}
根据firstname
方法参数的值设置Student
类中的字段fName
。
当您从main
调用该方法时,请在您正在阅读的文件中包含该名称:
myStudent.setFirstName(scanner.next());
您的学生课程中不需要扫描仪。
更改所有设置者以获取参数,并使用Scanner
中的main
提供值。