在java中实现类和对象,调用方法

时间:2013-09-17 00:37:24

标签: java class methods

我在调用方法时遇到问题。该程序的基础是从data.txt中读取数据,获取给定的名称令牌,然后获取所有等级,然后对成绩执行一些操作以提供该人员成绩的详细信息。我在名为Grades.java的单独文件中执行所有方法,该文件具有Grades类。我遇到麻烦,因为我必须在我的代码中使用testGrades方法(我认为没有必要)。我已经做了我需要做的一切,结果是在不同的程序中完美而没有两个不同的.java文件。但有必要这样做。我认为我已经把所有东西都固定下来了,我只是对如何实现和调用testGrades方法感到困惑。我对它进行了评论,并对程序中的位置提出了疑问。类和对象以及一般的java都是新手。抱歉这个蹩脚的问题。

public class Lab2 {

public static void main(String[] args) {

    Scanner in = null; //initialize scanner
    ArrayList<Integer> gradeList = new ArrayList<Integer>(); //initialize gradeList
     //grab data from data.txt 
    try {
        in = new Scanner(new File("data.txt"));
    } catch (FileNotFoundException exception) {
        System.err.println("failed to open data.txt");
        System.exit(1);
    }
    //while loop to grab tokens from data
    while (in.hasNext()) {
        String studentName = in.next();   //name is the first token
        while (in.hasNextInt()) {   //while loop to grab all integer tokens after name
            int grade = in.nextInt();   //grade is next integer token
            gradeList.add(grade);       //adding every grade to gradeList
        }

      //grab all grades in gradeList and put them in an array to work with
        int[] sgrades = new int[gradeList.size()];
        for (int index = 0; index < gradeList.size(); index++) {
            sgrades[index] = gradeList.get(index);  //grade in gradeList put into grades array 
        }

     //testGrades(sgrades);     How would I implement this method call? 

    }
}

public static void testGrades(Grades grades) {
    System.out.println(grades.toString()); 
    System.out.printf("\tName:    %s\n", grades.getName());
    System.out.printf("\tLength:  %d\n", grades.length());
    System.out.printf("\tAverage: %.2f\n", grades.average());
    System.out.printf("\tMedian:  %.1f\n", grades.median());
    System.out.printf("\tMaximum: %d\n", grades.maximum());
    System.out.printf("\tMininum: %d\n", grades.minimum());
}

   }

这是Grades.java文件开头的一小部分

     public class Grades {

private String studentName; // name of student Grades represents
private int[] grades; // array of student grades

public Grades(String name, int[] sgrades) {
    studentName = name; // initialize courseName
    grades = sgrades; // store grades
} 

      public String getName() {
    return studentName;
} // end method getName

public int length() {
    return grades.length; 
}

2 个答案:

答案 0 :(得分:1)

您的测试成绩是否会使用Grades对象,因此您需要使用数据构建Grades对象并将其传递给测试成绩方法 即。

Grades myGrade = new Grades(studentName,sgrades);
testGrades(myGrade);  

答案 1 :(得分:1)

看起来您需要做的是在main方法中使用某种类型的局部变量,它将保留您的自定义Grade类型。所以你需要添加一行像..

Grades myGrades = new Grades(studentName, sgrades);

然后你可以用类似......

这样的行来调用你的testGrades方法
testGrades(myGrades);

您的Grades类中可能还需要一个toString方法。

看起来像家庭作业,所以我试着留下一点让你弄明白:)