平均方法数组提示

时间:2014-02-09 01:09:45

标签: java arrays

你能否告诉我一般方法中我的平均值出错了?我试图在读取分数中调用该方法。我正在尝试获取我在input.txt文件中的分数的平均值。

import java.io.*;
import java.util.*;
public class FindGrade {
public static final int NUM_SCORE_TYPES = 5;   

public static void main(String[] args) {
    Scanner scan = null;
    int[] quizArray = null;    
    int[] labArray = null;     
    int[] attendance = null; 
    int[] midterms = null; 
    int quizgrade =0;
    int labgrade=0;
    int attendance_1=0;
    int midterms_1 =0;
    String name;


    try {
        scan = new Scanner(new File("input.txt")); 
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return;
    }

    // each iteration is for single exam type (ie: Quizzes is the 1st one)
    for (int i = 0; i < NUM_SCORE_TYPES; i++) {

        name = scan.next(); 
        int numScores = scan.nextInt();
        int maxGrade = scan.nextInt();

        if (name.equals("Quizzes")) {
            quizArray = new int[numScores];
            readScores(quizArray, numScores, scan);


        }

        else if (name.equals("Labs")) {
            labArray = new int[numScores];
            readScores(labArray, numScores, scan);

        }
        else if (name.equals("Lab_attendance")) {
            attendance = new int[numScores];
            readScores(attendance, numScores, scan);

        }
        else if (name.equals("Midterms")) {
            midterms = new int[numScores];
            readScores(midterms, numScores, scan);

        }

    }

}


public static void readScores(int[] scoreArray, int numScores, Scanner scan) {
    for (int i = 0; i < numScores; i++) { 
        scoreArray[i] = scan.nextInt();
    }
}

public static void average(double [] scoreArray, int numScores){
    double sum=0;
    for(int i=0; i< scoreArray.length; i++){
        sum += scoreArray[i];
    }
    double average = sum/numScores;

    System.out.println(sum + " " + average);



}

1 个答案:

答案 0 :(得分:1)

在任何情况下,您都无法使用您在其中创建的阵列直接调用它。因为数组的类型为int,所以average-method需要double数组。当你改变它时,你可以像这样调用这个方法......

public static void readScores(int[] scoreArray, int numScores, Scanner scan) {
    for (int i = 0; i < numScores; i++) { 
        scoreArray[i] = scan.nextInt();
    }

    average(scoreArray, numScores); // <----- Call it here
}

public static void average(int[] scoreArray, int numScores){
    double sum=0;
    for(int i=0; i< scoreArray.length; i++){
        sum += scoreArray[i];
    }
    double average = sum/numScores;
    System.out.println(sum + " " + average);
}