在Java中使用数组的True或False测试分级器

在Java中使用数组的True或False测试分级器,java,arrays,Java,Arrays,请注意,是的,这是作业,但我已经完成了几乎所有的作业,我只需要帮助计算分数方法和输出方法。我不是要求别人来完成我只是需要一些帮助 你的一位教授需要帮助给真假考试打分。学生ID和考试答案存储在一个文件中。文件中的第一个条目包含以下形式的测试答案: TFFTFFTTTTFFTFTFTFTTT 文件中的第二个条目是一个整数,即文件中的学生总数 文件中的每个其他条目都是学生的ID,后面是空白,后面是学生的回答。例如,条目: ABC54301 TFTFTFTFTFTFTTFT 表示学生ID为ABC5430

请注意,是的,这是作业,但我已经完成了几乎所有的作业,我只需要帮助计算分数方法和输出方法。我不是要求别人来完成我只是需要一些帮助

你的一位教授需要帮助给真假考试打分。学生ID和考试答案存储在一个文件中。文件中的第一个条目包含以下形式的测试答案:

TFFTFFTTTTFFTFTFTFTTT

文件中的第二个条目是一个整数,即文件中的学生总数

文件中的每个其他条目都是学生的ID,后面是空白,后面是学生的回答。例如,条目:

ABC54301 TFTFTFTFTFTFTTFT

表示学生ID为ABC54301,问题1的答案为真,问题2的答案为假,依此类推。这个学生没有回答问题9。每个空白答案应替换为S(表示跳过的问题)。这次考试有20道题

每个正确答案得2分,每个错误答案得-1分,没有答案得0分。编写一个程序来处理测试数据。每个学生输出的第一行应该是学生ID,然后是答案,然后是考试分数,最后是考试成绩。第二行应该在学生遗漏的每个答案下都包含一个X

假设以下等级比例:90%-100%,A;80%-89.99%,B;70%-79.99%,C;60%-69.99%,D;和0%-59.99%,F

输入文件中的数据必须一次性输入并存储在单个变量中。必须从单个变量一次输出所有数据。您必须在程序中使用多种方法。创建多少代码取决于您自己,但有一个最低数量是您应该拥有的,并且您将因为在主方法中放置了太多代码而被计算在内

输入示例:

ABC54301 TFTFTFTFTFTFTTFT

示例输出: ABC54301 TFTFTFTFTFTFTFTTFT 77.5%C XXX X XXXX XX

这是我所有的代码,到目前为止,我需要2种方法的帮助,就这样,提前谢谢

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

public class TestGrader
{
  public static Scanner inFile;
  public static PrintWriter outFile;

  public static void main(String[] args)throws IOException
  {
    inFile = new Scanner(new FileReader("GradesIn.dat"));
    outFile = new PrintWriter("GradesOut.dat");

    String testAnswers = inFile.next();

    int numberOfStudents = inFile.nextInt();
    double[] testScores = new double[numberOfStudents];

    String[][] studentTests = new String[numberOfStudents][2];
    StringBuilder[][] studentResults = new StringBuilder[numberOfStudents][2];    

    initializeResults(studentResults);
    getData(studentTests);
    gradeTests(studentTests, studentResults, testAnswers, testScores);    
    outputData(studentTests, studentResults, testScores);

    outFile.close();
    inFile.close();
  }

  /////////////////////////////////////////////////////////////////////////////
  // Method Name: initializeResults
  // Called By:   main()
  /////////////////////////////////////////////////////////////////////////////
  public static void initializeResults(StringBuilder[][] studentResults)
  {
    for(int rowIndex = 0; rowIndex < studentResults.length; rowIndex++)
    {
      for(int colIndex = 0; colIndex < studentResults[rowIndex].length; colIndex++)
      {
        if(colIndex == 0)
        {
          studentResults[rowIndex][colIndex] = new StringBuilder("        ");
        }
        else
        {
          studentResults[rowIndex][colIndex] = new StringBuilder("                    ");
        }
      }
    }
  }

  /////////////////////////////////////////////////////////////////////////////
  // Method Name: getData
  // Called By:   main()
  /////////////////////////////////////////////////////////////////////////////
  public static void getData(String[][] studentTests)
  {    
    String[] temp = new String[studentTests.length];

    inFile.nextLine();

    for(int index = 0; index < (temp.length); index++)
    {
      temp[index] = inFile.nextLine();
    }

    for(int rowIndex = 0; rowIndex < studentTests.length; rowIndex++)
    {      
        studentTests[rowIndex][0] = temp[rowIndex].substring(0,8);
    }

    for(int rowIndex = 0; rowIndex < studentTests.length; rowIndex++)
    {      
        studentTests[rowIndex][1] = temp[rowIndex].substring(9, 29);
    }
  }

  /////////////////////////////////////////////////////////////////////////////
  // Method Name: gradeTests
  // Called By:   main()
  /////////////////////////////////////////////////////////////////////////////
  public static void gradeTests(String[][] studentTests, StringBuilder[][] studentResults, String testAnswers, double[] testScores)
  {    

  }

  /////////////////////////////////////////////////////////////////////////////
  // Method Name: outputData
  // Called By:   main()
  /////////////////////////////////////////////////////////////////////////////
  public static void outputData(String[][] studentTests, StringBuilder[][] studentResults, double[] testScores)
  {

  }

  /////////////////////////////////////////////////////////////////////////////
  // Method Name:  calculateLetterGrade
  // Called By:    outputData()
  /////////////////////////////////////////////////////////////////////////////
  public static String calculateLetterGrade(double testScore)
  {
    String letterGrade = "";

      if((testScore / 40 * 100) < 60.0)
      {
        letterGrade = "F";
      }
      else if((testScore / 40 * 100) < 70.0)
      {
        letterGrade = "D";
      }
      else if((testScore / 40 * 100) < 80.0)
      {
        letterGrade = "C";
      }
      else if((testScore / 40 * 100) < 90.0)
      {
        letterGrade = "B";
      }
      else
      {
        letterGrade = "A";
      }

      return letterGrade;
  }
}
import java.util.*;
导入java.io.*;
公共类测试分级器
{
公共静态扫描仪填充;
公共静态PrintWriter输出文件;
公共静态void main(字符串[]args)引发IOException
{
infle=新扫描仪(新文件阅读器(“GradesIn.dat”);
outFile=新的打印作者(“GradesOut.dat”);
字符串testAnswers=infle.next();
int numberOfStudents=infle.nextInt();
double[]测试分数=新的double[numberOfStudents];
字符串[][]studentTests=新字符串[numberOfStudents][2];
StringBuilder[]studentResults=新StringBuilder[numberOfStudents][2];
初始化结果(studentResults);
getData(学生测试);
成绩测试(学生测试、学生结果、测试答案、测试分数);
输出数据(学生测试、学生结果、测试分数);
outFile.close();
infle.close();
}
/////////////////////////////////////////////////////////////////////////////
//方法名称:initializeResults
//调用人:main()
/////////////////////////////////////////////////////////////////////////////
公共静态无效初始化结果(StringBuilder[][]studentResults)
{
对于(int-rowIndex=0;rowIndex
“”-
studentTests[rowIndex][1] = temp[rowIndex].substring(9, 29).replace(" ", "S");
for(int i = 0; i < studentTests.length; ++i) {
    int score = 0;
    for(int j = 0; j < result.length(); ++j) {
        if(studentTests[i][1].charAt(j) == testAnswers.charAt(j)) {
            ++score;
        } else if(studentTests[i][1].charAt(j) != 'S') {
            --score;
        }
    }
    testScores[i] = score;
}