从导入的类中调用getter

时间:2017-01-15 00:17:12

标签: java

我无法从导入的类中调用getter 我创建了一个工作类(学生)和一个动作类(ProgressReport)。主类读取文本文件并将数据写入数组。然后在工人阶级中操纵数据。最后,ProgressReport.generateReport将创建一个报告,给出学生姓名,平均成绩和与该平均成绩相关联的字母等级。
我无法使用Progress Report课程中的学生获取者。 Eclipse说这个方法是未定义的。我不确定我做错了什么或如何解决它。非常感谢任何帮助。
注意:我添加了一些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';
        }

    }   
}

1 个答案:

答案 0 :(得分:0)

你没有说明你想要的平均学生(不知道你为什么用s命名你的班级学生)。它需要看起来像这样:

section[1][1].getAverage()
相关问题