가져온 클래스에서 가져 오기 메소드를 호출하는 데 문제가 있습니다.
나는 Working 클래스 (Students)와 Action 클래스 (ProgressReport)를 만들었습니다. 메인 클래스는 텍스트 파일을 읽고 데이터를 배열에 씁니다. 그런 다음 데이터는 작업 클래스에서 조작됩니다. 마지막으로 ProgressReport.generateReport는 학생 이름, 학년 평균 및 문자 평균을 해당 평균과 연관시키는 보고서를 작성합니다.
Progress Report 클래스의 Students getters를 사용하는 데 문제가 있습니다. 이클립스는 메소드가 정의되지 않았다고 말하고있다. 나는 내가 뭘 잘못했는지 또는 그것을 고치는 방법을 정확히 알지 못합니다. 어떤 도움이라도 대단히 감사 할 것입니다.
참고 : 일부 코드가 실행되도록 println을 추가했습니다.
미리 감사드립니다.가져온 클래스에서 가져 오기 메소드 호출
코드는 다음과 같이하십시오
진행 신고
package Lab1A;
import java.util.*;
import Lab1A.Students;
import java.io.*;
public class ProgressReport {
public Students section[][];
public static void main(String[] args) throws IOException
{
Students tmpStudent;
ProgressReport progressReport = new ProgressReport();
progressReport.readInputFile();
progressReport.generateReport();
System.out.println("\nSEARCH TEST");
tmpStudent = null;
tmpStudent = progressReport.sequentialSearch(0, "Cooper");
if (tmpStudent != null)
System.out.println("Found " + tmpStudent.getName() +
"\tAverage = " + tmpStudent.getAverage() +
"\tGrade = " + tmpStudent.getGrade());
else System.out.println("Fail to find the student");
tmpStudent = null;
tmpStudent = progressReport.sequentialSearch(0, "Bronson");
if (tmpStudent != null)
System.out.println("Found " + tmpStudent.getName() +
"\tAverage = " + tmpStudent.getAverage() +
"\tGrade = " + tmpStudent.getGrade());
else System.out.println("Fail to find the student");
tmpStudent = null;
tmpStudent = progressReport.sequentialSearch(1, "Diana");
if (tmpStudent != null)
System.out.println("Found " + tmpStudent.getName() +
"\tAverage = " + tmpStudent.getAverage() +
"\tGrade = " + tmpStudent.getGrade());
else System.out.println("Fail to find the student");
}
public ProgressReport()
{
section = new Students [2][];
}
public void readInputFile() throws FileNotFoundException
{
System.out.println("in readInputFile method");
//Open file
File input = new File("Lab1A.in");
Scanner inputFile = new Scanner(input);
System.out.println("file is open");
//Read file data
int currentStudent = 0;
while (inputFile.hasNext())
{
System.out.println("In while loop");
//Get Student count
int rows = inputFile.nextInt();
//Read student data
section[currentStudent] = new Students[rows];
System.out.println("array initiated");
for(int i = 0; i < rows; i++)
{
System.out.println("In for loop");
//read in a students info
String sName = inputFile.next();
//Read in grades
int grade1 = inputFile.nextInt();
int grade2 = inputFile.nextInt();
int grade3 = inputFile.nextInt();
int grade4 = inputFile.nextInt();
int grade5 = inputFile.nextInt();
//Send to Students Array
section[currentStudent][i] = new Students(sName, grade1, grade2, grade3, grade4, grade5);
}
//Next Student Line
currentStudent++;
}
inputFile.close();
}
public void generateReport()
{
System.out.println("Progress Report");
double average = Students.class.getAverage();
//String section = "Section\n";
}
public Students sequentialSearch(int section, String searchName)
{
return null;
}
}
학생들 클래스
package Lab1A;
import java.lang.reflect.Array;
public class Students {
private String name;
private char grade;
private double average;
private int scores[];
public Students(String sName, int grade1, int grade2, int grade3, int grade4, int grade5)
{
//CONSTRUCTOR load data from ProgressReport
name = sName;
int newScores[] = {grade1, grade2, grade3, grade4, grade5};
scores = newScores;
}
//Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGrade() {
if(average >= 90 && average <= 100)
{
grade = 'A';
}
if(average >= 80 && average < 90)
{
grade = 'B';
}
if(average >= 70 && average < 80)
{
grade = 'C';
}
if(average >= 60 && average < 70)
{
grade = 'D';
}
if(average >= 0 && average < 60)
{
grade = 'F';
}
return grade;
}
public void setGrade(char grade) {
this.grade = grade;
}
public double getAverage() {
return average;
}
public void setAverage(double average) {
this.average = average;
}
public int[] getScores() {
return scores;
}
public void setScores(int[] scores) {
this.scores = scores;
}
//Calculate average score
public void calculateAverage()
{
int total = 0;
for (int i = 0; i < scores.length; i++)
{
total += scores[i];
}
average = total*1.0/scores.length;
}
//calculate letter grade based on average score (calulateAverage.average)
public void calculateGrade()
{
if(average >= 90 && average <= 100)
{
grade = 'A';
}
if(average >= 80 && average < 90)
{
grade = 'B';
}
if(average >= 70 && average < 80)
{
grade = 'C';
}
if(average >= 60 && average < 70)
{
grade = 'D';
}
if(average >= 0 && average < 60)
{
grade = 'F';
}
}
}
코드에서 오류가 발생한 라인은 어느 것입니까? 자원 봉사자에게 도움을 청할 때 모든 필요한 정보를 제공하고 다른 사람들이 여러분을 도울 수 있도록 예의를 지키는 것을 고려하십시오. –
'double average = Students.class.getAverage(); '를 말하는 것으로 가정합니다. 여기서 무슨 일이 일어날 지 모르겠습니다. 'getAverage()'는 인스턴스 메소드이며 작동 할 인스턴스가 필요합니다. 'Students.class'라는 표현은'Students'의 인스턴스가 아닌'Students' 클래스의 Class <>'객체를 반환합니다. 당신은 질문을 명확히해야 할 것입니다. –
Josh는 모든 학생 객체의 평균을 계산하려고합니다.이 경우 학생 # getAverage()를 호출하고 누적 변수에 추가 한 다음 학생 수로 나누어 각 학생을 반복해야합니다. 너무 두 배로) ....하지만 이것이 유일한 문제인지 확실하지 않습니다. – synchronizer