2017-01-15 3 views
0

가져온 클래스에서 가져 오기 메소드를 호출하는 데 문제가 있습니다.
나는 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'; 
     } 

    } 
} 
+0

코드에서 오류가 발생한 라인은 어느 것입니까? 자원 봉사자에게 도움을 청할 때 모든 필요한 정보를 제공하고 다른 사람들이 여러분을 도울 수 있도록 예의를 지키는 것을 고려하십시오. –

+1

'double average = Students.class.getAverage(); '를 말하는 것으로 가정합니다. 여기서 무슨 일이 일어날 지 모르겠습니다. 'getAverage()'는 인스턴스 메소드이며 작동 할 인스턴스가 필요합니다. 'Students.class'라는 표현은'Students'의 인스턴스가 아닌'Students' 클래스의 Class <>'객체를 반환합니다. 당신은 질문을 명확히해야 할 것입니다. –

+0

Josh는 모든 학생 객체의 평균을 계산하려고합니다.이 경우 학생 # getAverage()를 호출하고 누적 변수에 추가 한 다음 학생 수로 나누어 각 학생을 반복해야합니다. 너무 두 배로) ....하지만 이것이 유일한 문제인지 확실하지 않습니다. – synchronizer

답변

0

당신은 당신이 당신의 클래스를 명명 된 이유는 확실하지 (의 평균을 원하는 학생을 지정하지 학생들과 함께). 다음과 같은 모양이 필요합니다.

section[1][1].getAverage() 
+0

위대한 작품! 감사. (나는 Java에 익숙하지 않고 모든 규칙을 아직 모르고있다. –

관련 문제