从文件中读取比较字符

时间:2014-04-09 18:43:56

标签: java

我需要比较从文件中读取的测试答案。该文件如下所示:

第1行=回答键

第3行及以下=学生ID +学生答案测试

TTFTFTTTFTFTFFTTFTTF

ABC54102 T FTFTFTTTFTTFTTF TF
DEF56278 TTFTFTTTFTFTFFTTFTTF
ABC42366 TTFTFTTTFTFTFFTTF
ABC42586 TTTTFTTT TFTFFFTF

我将答案键(第1行)放在名为ansKey的字符串中,带有.nextLine()。然后我循环打印学生ID,并将该学生的答案放在另一个字符串中并将两者都传递给方法:

Scanner inFile = new Scanner(file);

while(inFile.hasNextLine())
{
        //Student ID
        System.out.print("\t" + inFile.next());

        //Student Answers
        studentAnswers = inFile.nextLine();
        System.out.print("\t" + studentAnswers);

        //Get examGrade
        testGrade = examGrade(ansKey, studentAnswers.trim());

        //Display scores
        System.out.println(testGrade);
}

在我的方法中,我有一个for循环进行比较:

public static String examGrade(String ansKey, String studentAnswers)
{
    for(int i = 0; i < studentAnswers.length(); i++)
    {
        if(ansKey.charAt(i) == studentAnswers.charAt(i))
            score += 2;
        else if(studentAnswers.charAt(i) == ' ')
            score += 0;
        else
            score -= 1;
    }
}

所有这一切都很好。除了我的教授不希望我使用trim()。如果我拿出来,我会得到ArrayIndexOutOfBounds。我使用trim()的原因是因为当我用.nextLine()读取时,studentAnswers前面有一个空格。我不能使用.next(),因为一些答案之间有空格。

我不相信我可以使用我已经在我的代码中使用的任何东西(这里没有看过类,数组等等)。我可以使用StringBuffer和StringTokenizer。但不确定这些课程对我有何帮助。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

好的,如果您不能使用trim()substring(),那么您必须使用算术

public static String examGrade(String ansKey, String studentAnswers)
{
    //Now only go up to the answer key length
    for(int i = 0; i < ansKey.length(); i++)
    {
        //shift the index we are checking the student answers by 1
        int j = i + 1;
        if(ansKey.charAt(i) == studentAnswers.charAt(j))
            score += 2;
        else if(studentAnswers.charAt(j) == ' ')
            score += 0;
        else
            score -= 1;
    }
}