【发布时间】:2015-03-20 07:21:55
【问题描述】:
在我的 JAVA 课上布置了一些作业,不得不为驾照考试编写一个程序。它必须有以下方法:
通过。如果学生通过了考试,则返回 true,或者 如果学生失败则为 false
完全正确。返回正确回答的总数 问题
完全不正确。返回错误的总数 回答问题
问题已错过。包含问题编号的 int 数组 学生错过的问题
到目前为止,我做得很好,直到我到达错过的问题部分。我们应该记得错误的更正,但是当我打电话给它时,我得到一个奇怪的数字 [I@55f96302.我在过去的 2 个小时里一直在看这个程序,但我不确定我搞砸了什么。任何帮助将不胜感激。谢谢你
public class DLE {
private char[] key = { 'B', 'D', 'A', 'A', 'C', 'A', 'B', 'A', 'C', 'D',
'B', 'C', 'D', 'A', 'D', 'C', 'C', 'B', 'D', 'A' };
private char[] answers;
public DLE(char[] ans)
{
answers = ans;
}
public boolean passed ()
{
return (totalCorrect() > 14);
}
public int totalCorrect()
{
int correct = 0;
for (int i = 0; i < key.length; i++)
{
if (key[i] == answers[i])
correct++;
}
return correct;
}
public int totalMissed()
{
int tmissed = 0;
tmissed = key.length - totalCorrect();
return tmissed;
}
public int[] questionsMissed()
{
int size = key.length - totalCorrect();
int[] missed = {};
if (size < 1)
return missed;
else
missed = new int [size];
int pos = 0;
for (int i = 0; i < key.length; i++)
{
if (key[i] != answers[i])
{
missed[pos] = (i + 1);
pos = pos + 1;
}
}
return missed;
}
}
// 驱动程序
public class driver
{
public static void main(String[] args)
{
// accept keyboard input
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter your answers below.\n");
char[] answers = new char[20];
// request an answer for each question
for(int i = 0; i < answers.length; i++)
{
// get input until input is valid
char input;
do
{
System.out.print(i + 1 + ". ");
// get character and make it upper case
input = Character.toUpperCase(keyboard.next().charAt(0));
}
while(input < 'A' || input >'D');
// store answer
answers[i] = input;
}
// print output here
DLE driver = new DLE(answers) {};
System.out.println();
System.out.println("You "+(driver.passed()?"passed" : "did not pass") + ".\n");
System.out.println("Correct: " + driver.totalCorrect() + "\n");
System.out.println("Incorrect: " + driver.totalMissed() + "\n");
System.out.println("Questions missed: " + driver.questionsMissed());
}
}
【问题讨论】:
-
这是因为您在调用 System.out.println(driver.questionsMissed()); 时打印出数组的 toString() 方法。默认的 toString() 是对象的哈希值。相反,您想打印出数组中的每个值。
标签: java