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