0

我很确定我已经弄清楚了这一切,但是我有 3 个未在主方法中初始化的数组,但显然我在主方法中调用方法时无法调用这些数组,所以我的问题是,使用我的代码下面有什么方法可以让我获得识别它们的方法吗?或者我该怎么做才能初始化 main 方法中的所有内容?我需要读入方法、等级方法、平均方法和输出方法。

import java.util.*;
import java.io.*;

public class Proj5 {
public static void main(String[] args)throws IOException{
    int lines=0;
    int [] quizKey = {1,1,2,2,1,1,3,2,4,1,3,5,4,1,2};
    String [] userAnswers = new String[100];
    int [][] userIndividualAnswers = new int[quizKey.length][userAnswers.length];
    int [] numCorrect = new int[quizKey.length];

        readInText(lines, userAnswers, quizKey);
        displayOutput(lines, percentCorrect, quizKey, userAnswers, userAnswersInt, numCorrect, grade);

}//end main

public static void readInText(int lines, String userAnswers[], int quizKey[])throws IOException{
    Scanner inFile = new Scanner(new File("QuizScores.txt"));
        while(inFile.hasNext()){
            String line = inFile.nextLine();
            String[] tokens = line.split(",");
            userAnswers[lines] = tokens[1];
            lines ++;


        }// end while loop
    int[][] userAnswersInt = new int[quizKey.length][lines];
    char[] grade = new char[lines];
    double[] percentCorrect = new double[lines];
}// end readInText


public static void gradeSingleQuiz(String tokens[], int lines, int quizKey[], String userAnswers[], int numCorrect[], int userAnswersInt[][], char grade[], double percentCorrect[]){
    for (int j=0; j<=lines; j++){
    numCorrect[j]=0;    
        for (int n=0; n<=quizKey.length; n++){
            userAnswersInt[n][j] = Integer.parseInt(userAnswers[n]);
                if(userAnswersInt[n][j]==(quizKey[n])){
                    numCorrect[j]++;    
            }
                if(numCorrect[j]>=14)

grade[j]='A';
                else if((numCorrect[j]>=12)&&(numCorrect[j]<14))
                    grade[j]='B';
                else if((numCorrect[j]>=11)&&(numCorrect[j]<12))
                    grade[j]='C';
                else if ((numCorrect[j]>=9)&&(numCorrect[j]<11))
                    grade[j]='D';
                else
                    grade[j]='F';

            percentCorrect[j] = numCorrect[j]/quizKey.length;

        }//end for loop
    }//end for loop
    for(int i=0; i<lines; i++){
        System.out.println(tokens[0] + "    " + numCorrect[i] + "    " +
                (percentCorrect[i]) + "    " + grade[i]);   

}
}// end gradeSingleQuiz

public static void averageScore(int lines, double percentCorrect[]){
    for(int d=0; d<=lines; d++){    
        System.out.println("Average: " + percentCorrect[d]);
    }//end for loop
}// end averageScore

public static void displayOutput(String tokens[], int lines, int quizKey[], String userAnswers[], int numCorrect[], int userAnswersInt[][], char grade[], double percentCorrect[]){
    System.out.println("Student ID    # Correct    %Correct    Grade");
        gradeSingleQuiz(tokens, lines, quizKey, userAnswers, numCorrect, userAnswersInt, grade, percentCorrect);
}// end display output

}//end class
4

1 回答 1

0

一种解决方案是将数组变成程序中的全局变量......这可能是移植到您的解决方案中的最简单的想法

另一种解决方案是从创建它们的各个函数中返回数组,然后从主函数中调用这些函数。

这些事情中的任何一个都应该或多或少地做你想要的。

于 2013-03-15T03:28:51.893 回答