我是Java新手,需要帮助理解一些事情。这是我的一个类的代码,旨在返回测验中的许多分数。
import java.util.ArrayList;
import java.util.ArrayList;
/**Contains methods to create an ArrayList of possible answers ask a question and mark it accordingly
* @author Ben Fowler
* @version
*/
public class ExamQuestionNumerical extends ExamQuestion{
public ExamQuestionNumerical(String question, int maximalMark, int correctAnswer) {
super(question, maximalMark);
// TODO Auto-generated constructor stub
}
ArrayList<Integer> answer = new ArrayList<Integer>();
ExamQuestionNumerical q1 = new ExamQuestionNumerical("10 - 6 = ?", 3, 1);
private int addAnswer(){
/**Adds 3 possible answers to the ArrayList
* @returns void
*/
answer.add(3);
answer.add(4);
answer.add(5);
}
private int returnMarks(correctAnswer){
/**
* @returns either max marks for a correct answer or 0 for incorrect.
*/
if (q1.answer = 1){
return maximalMark;
}else {return 0;}
}
现在,显然问题出在底部方法上,我只需要为问题返回一个标记。我(认为我)在 ArrayList 中存储了 3 个可能的答案,并且需要一种方法来根据是否选择了正确答案来返回分数。我知道我缺少结构/语法/更多的基本知识,但请帮助,我可以花几个小时的研究兜圈子或在一点指导下,实际上到达某个地方。谢谢
你的代码有几个问题。以下是包含其中几个的列表:
-
您的
addAnswer()
方法应该返回void
而不是int
,因为它当前没有返回任何内容。 -
您需要为
returnMarks
方法的correctAnswer
参数提供一个类型。我猜int
可能是合适的。 -
语句
if (q1.answer = 1)
应if (q1.answer == 1)
,注意用于比较的双等号。单等号用于分配。 -
您正在类中创建
ExamQuestionNumerical
的实例(名为q1
)。这似乎很奇怪。这会导致错误,因为您不对其调用addAnswer()
,而是在returnMarks
方法中引用它。我建议您不需要在类中创建实例 - 在某处测试类的main()
方法中创建实例。 -
您应该真正将您的字段标记为类中的
private
。在这种情况下,answer
可能是私有的。约定规定字段定义在您的类中排在第一位,高于构造函数。
确保使用 IDE(如 Eclipse)来编写代码。这确保了由于连续的后台编译,许多问题将被自动检测到。