このコードの目的は、2 つの異なる string[] 配列を比較し、一致する要素の数を確認することです。これにより、メソッドは、学生がテストに合格したか不合格だったかを確認し、成績を決定することができます。ただし、すべてのテストが行われると、合格には true が返され、文字のグレードには "A" が返されます。要素が正しく比較されるようになったので、すべての要素が .equals() を渡すという問題がまだ残っています。つまり
answerKey[1] = "B";
studentAnswers[1] = "C";
、これら 2 つの要素を比較する場合、.equals().
public class ListOfAnswers
{
static final String[] answerKey = {"A", "B", "B", "C", "D", "B", "C", "C", "D", "E",
"C", "D", "D", "E", "A", "A", "A", "D", "D", "E"};
String[] studentAnswers;
public ListOfAnswers(String[] ans)
{
studentAnswers = ans;
}
public boolean checkPassOrFail()
{
int answersRight = 0;
for (int cnt = 0; cnt < studentAnswers.length; cnt++)
{
if(studentAnswers[cnt].equals(answerKey[cnt]))
{
answersRight++;
}
}
if (answersRight >= 14)
{
return true;
}
else
{
return false;
}
}
public String computeGrade()
{
int score = 0;
String grade = "";
for (int cnt = 0; cnt < studentAnswers.length; cnt++)
{
if (studentAnswers[cnt].(answerKey[cnt]))
{
score++;
}
}
if (score < 10)
{
grade = "E";
}
else if (score == 10)
{
grade = "D";
}
else if ((score==11)||(score==12))
{
grade = "C-";
}
else if (score==13)
{
grade = "C";
}
else if (score == 14)
{
grade = "C+";
}
else if (score == 15)
{
grade = "B-";
}
else if (score == 16)
{
grade = "B";
}
else if (score == 17)
{
grade = "B+";
}
else if (score == 18)
{
grade = "A-";
}
else if ((score == 19)||(score==20))
{
grade = "A";
}
return grade;
}
}
テストデータは次のようになります
public class ListOfAnswersTester
{
public static void main(String[] args)
{
String[] danAnswers = {"A", "B", "B", "D", "D", "B", "C", "C", "D", "E", "C",
"D", "D", "E", "A", "A", "A", "D", "D", "E"};
ListOfAnswers danAnswerList = new ListOfAnswers(danAnswers);
String[] bobAnswers = {"A", "C", "B", "C", "D", "B", "C", "C", "D", "E", "C",
"D", "A", "E", "A", "A", "A", "D", "E", "E"};
ListOfAnswers bobAnswerList = new ListOfAnswers(danAnswers);
System.out.println("Student Dan's Pass/Fail: " + danAnswerList.checkPassOrFail());
System.out.println("Student Dan's Grade: " + danAnswerList.computeGrade());
System.out.println("Student Bob's Pass/Fail: " + bobAnswerList.checkPassOrFail());
System.out.println("Student Bob's Grade: " + bobAnswerList.computeGrade());
}
}