基本结构/语法/方法帮助。基本测验类

时间:2013-11-11 15:58:29

标签: java methods arraylist

我是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个可能的答案,并且需要一种方法来根据是否选择正确答案来返回分数。我知道我缺少结构/语法的基本知识/更多,但请帮助,我可以花几个小时的研究进行圈子或一点指导,实际上到达某个地方。感谢

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题。这是一个包含其中几个的列表:

  1. 您的addAnswer()方法应该返回void而不是int,因为它目前没有返回任何内容。

  2. 您需要为correctAnswer方法提供returnMarks参数的类型。我猜int可能是合适的。

  3. 声明if (q1.answer = 1)应为if (q1.answer == 1),请注意用于比较的双等号。单等号用于分配。

  4. 您正在班级中创建ExamQuestionNumerical的实例(名为q1)。这看起来很奇怪。这会导致错误,因为您没有在其上调用addAnswer(),但您在returnMarks方法中引用了它。我建议您不需要在类中创建实例 - 在某个测试类的main()方法中创建实例。

  5. 您应该在班级中将字段标记为private。在这种情况下,answer应该是私有的。惯例规定,字段定义在您的类中首先出现在构造函数之上。

  6. 确保使用IDE(例如Eclipse)编写代码。由于连续的后台编译,这可以确保自动检测到许多问题。