Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
答案有多种选择的Java小测验_Java_List_Jradiobutton - Fatal编程技术网

答案有多种选择的Java小测验

答案有多种选择的Java小测验,java,list,jradiobutton,Java,List,Jradiobutton,我正在尝试开发一个java测试,其基本思想如下: 一个测验包含n个问题,一个问题有0到n个正确答案,我必须将其链接到数据库,因此我的表是: 表测验: id\u测验整数主键,测验名称文本 表问题: id\u问题整数主键、问题、id\u测验(外键) 表答案: id\u答案整数主键、答案文本、状态文本、id\u问题(外键) 因此,我的java类是: public class Quiz { int idQuiz; String QuizName; public Quiz(

我正在尝试开发一个java测试,其基本思想如下: 一个测验包含n个问题,一个问题有0到n个正确答案,我必须将其链接到数据库,因此我的表是:

测验

id\u测验整数主键,测验名称文本
问题

id\u问题整数主键、问题、id\u测验(外键)
答案

id\u答案整数主键、答案文本、状态文本、id\u问题(外键)
因此,我的java类是:

public class Quiz {
    int idQuiz;
    String QuizName;

    public Quiz(int id, String quiz) {
        this.idQuiz = id;
        this.QuizName = quiz;
    }

    // getters ...
}
我的问题是:

public class Question {
    int idQuestion;
    String question;
    int idQuiz;

    public Question(int id, String question){
        this.idQuiz = id;
        this.question = question;
    }

    // getters ...
}
答案也是一样的:

public class Answer {
    int idAnswer;
    String answer;
    String statut;
    int idQuestion;

    public Answer(int id, String answer, String statut){
        this.idAnswer = id;
        this.answer = answer;
        this.statut = statut;
    }

    // getters ...
}
JFrame
包含一个
JCombobox
,其中包含可用测验列表,选择完成后,一个按钮发送
idquick
,以获取所选测验的问题列表。 在我的测验
JFrame
中,我制作了一个函数,用一个next按钮填充问题
JLabel
,并用一个
JRadioButton
选择该问题的多个选项

我在获取真实答案列表时遇到了一个小问题,用户必须选择所有真实答案,如果有多个真实问题,则不能只选择一个。 有人知道吗?
谢谢。

使用复选框,而不是单选按钮


单选按钮只允许单选。复选框是一个控件,您可以在其中选择是否为每个选项选中复选框。请注意,这也包括“没有选中的答案”选项(虽然可以从没有选择单选按钮开始,但一旦用户选择了任何单选按钮,他们将无法取消选择)。

恐怕您将需要世界毁灭者Destructor的帮助

他将一个接一个地攻击用户标记为正确的答案,直到决定用户的命运

首先,你需要这个非常重要的课程:

public class DestructorTheDestroyerOfWorlds
{
    private static List<Answer> correctAnswers;

    public static boolean destroyAnswers(List<Answer> userAnswers)
    {
        boolean success = true;
        for(Answer userAnswer : userAnswers) 
        {
            success &= destroyAnswer(userAnswer);
        }
        return success;
    }

    private static boolean destroyAnswer(Answer userAnswer)
    {
        for (int i = 0; i < correctAnswers.length; i++)
        {
            if (correctAnswers.get(i).idAnswer == userAnswer.idAnswer)
            {
                correctAnswers.remove(i);
                return true;
            }
        }
        return false;
    }

    public static boolean isOutOfAmmo()
    {
        return correctAnswers.isEmpty();
    }

    public static void loadUp(List<Answer> answers)
    {
        correctAnswers = answers;
    }
}

你是在问如何从你的数据库(=数据库选择语句)中获得正确答案的列表,还是你会使用什么样的Swing对象来回答多个正确答案的问题?@Mark,我的意思是,如何检查这个家伙是否选择了与数据库中答案相同的答案。好的,但是,我如何比较我选择的列表和链接到该问题的真实答案。您将答案ID作为复选框的ID,然后将发送的ID与正确的ID进行比较。这是不可能的,因为如果一个问题有多个选择,而该人选择了一个正确的答案,那么在这种情况下就可以了。为什么?如果您检查是否存在所有正确答案,并且没有其他答案,那么您也将涵盖此场景。例如:对于问题a,我们有4个选项,选项1为真,选项2为假,选项3为真,选项4为假;如果他选择了选项1,则为真,答案为正确。
List<Answer> possibleAnswers = readThoseFromTheDatabase();
List<Answer> correctAnswers = doAFilterOn(possibleAnswers);

List<Answer> userAnswers = new List();
if (checkbox1.isSelected()) userAnswers.add(possibleAnswers.get(0));
if (checkbox2.isSelected()) userAnswers.add(possibleAnswers.get(1));
if (checkbox3.isSelected()) userAnswers.add(possibleAnswers.get(2));
if (checkbox4.isSelected()) userAnswers.add(possibleAnswers.get(3));
DestructorTheDestroyerOfWorlds.loadUp(correctAnswers);

boolean successfullyDestroyedAllAnswers = DestructorTheDestroyerOfWorlds.destroyAnswers(userAnswers);

if (successfullyDestroyedAllAnswers && DestructorTheDestroyerOfWorlds.isOutOfAmmo())
{
    System.out.println("Oh fateful user, thy answers were right!");
}
else
{
    System.out.println("Oh shameful user, thy answers were wrong!");
}