Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 - Fatal编程技术网

Java 如何在一页中显示不同类别的不同分数

Java 如何在一页中显示不同类别的不同分数,java,Java,我有3个不同的类别(每个不同的帧),它们通过“继续”按钮连接,最后一个帧是“完成”按钮。单击“完成”按钮后,我想显示每个类别的结果(按分数),但每当我单击“完成”按钮时,最后一个类别的分数与两个类别的分数相同。请帮帮我,我不知道怎么做 请注意,我在另外两个框架中没有代码以结果形式显示分数 public Result(int score, ArrayList<Questions> list) { initComponents(); txtLogical.setText(

我有3个不同的类别(每个不同的帧),它们通过“继续”按钮连接,最后一个帧是“完成”按钮。单击“完成”按钮后,我想显示每个类别的结果(按分数),但每当我单击“完成”按钮时,最后一个类别的分数与两个类别的分数相同。请帮帮我,我不知道怎么做

请注意,我在另外两个框架中没有代码以结果形式显示分数

public Result(int score, ArrayList<Questions> list) {
    initComponents();
    txtLogical.setText(String.valueOf(score + " out of " + list.size()));
    txtEnglish.setText(String.valueOf(score + " out of " + list.size()));
    txtMath.setText(String.valueOf(score + " out of " + list.size()));
}
//这是我最后一帧中的代码

try {
    ResultSet rs = stmt.executeQuery(
        "Select * from Questions where exam_category= 'Mathematics'");

    while (rs.next()) {
        Questions x = new Questions(
            rs.getString("Question_Id"), 
            rs.getString("Subject_Code"), 
            rs.getString("Exam_Category"),
            rs.getString("Question"), 
            rs.getString("Choice_A"), 
            rs.getString("Choice_B"),
            rs.getString("Choice_C"), 
            rs.getString("Choice_D"), 
            rs.getString("Answer"));
        list.add(x);
    }

    for (int i = 0; i < list.size(); i++) {
        if(list.get(i).getAnswer().equals(userAnswer.get(i).toString())) {
            score++;
            System.out.print(score);
        }
    }

    new Result(score, list).setVisible(true);
    this.dispose();

} catch (SQLException ex) {
    Logger.getLogger(LogicalReasoning.class.getName()).log(Level.SEVERE, null, ex);
}
试试看{
结果集rs=stmt.executeQuery(
“从考试类别为‘数学’的问题中选择*);
while(rs.next()){
问题x=新问题(
rs.getString(“问题Id”),
rs.getString(“主题代码”),
rs.getString(“考试类别”),
rs.getString(“问题”),
rs.getString(“选择A”),
rs.getString(“Choice_B”),
rs.getString(“Choice_C”),
rs.getString(“选择”),
rs.getString(“答案”);
增加(x);
}
对于(int i=0;i
//这是我的结果表中的代码

public Result(int score, ArrayList<Questions> list) {
    initComponents();
    txtLogical.setText(String.valueOf(score + " out of " + list.size()));
    txtEnglish.setText(String.valueOf(score + " out of " + list.size()));
    txtMath.setText(String.valueOf(score + " out of " + list.size()));
}
公开结果(整数分数,数组列表){
初始化组件();
txtLogical.setText(String.valueOf(score+“of”+list.size());
txtEnglish.setText(String.valueOf(score+“of”+list.size());
setText(String.valueOf(score+“of”+list.size());
}

尝试以下方法:

Result
应获得3个主题的所有分数,因此我将其更改为:

public Result(int[] logicalResult, int[] englishResult, int[] mathResult) {
    initComponents();        
    txtLogical.setText(logicalResult[0] + " out of " + logicalResult[1]);
    txtEnglish.setText(englishResult[0] + " out of " + englishResult[1]);
    txtMath.setText(mathResult[0] + " out of " + mathResult[1]);
}
每个主题结果都是一个
int[]
,其中有两个值,即该主题的分数和问题数

然后,为了满足这一需求,我将有一个方法返回给定主题的小
int[]
,以您当前的实现为例,它将如下所示:

private int[] getScoreForTopic(String topic, List<Answer> userAnswers) {
    int score = 0;
    List<Questions> list = new ArrayList<>();

    try {

        Connection con;
        // instantiate your connection

        PreparedStatement stmt = con.prepareStatement(
           "Select * from Questions where exam_category= ?");
        stmt.setString(1, topic);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            Questions x = new Questions(
                    rs.getString("Question_Id"),
                    rs.getString("Subject_Code"),
                    rs.getString("Exam_Category"),
                    rs.getString("Question"),
                    rs.getString("Choice_A"),
                    rs.getString("Choice_B"),
                    rs.getString("Choice_C"),
                    rs.getString("Choice_D"),
                    rs.getString("Answer"));
            list.add(x);
        }

        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getAnswer().equals(userAnswer.get(i).toString())) {
                score++;
                System.out.print(score);
            }
        }


    } catch (SQLException ex) {
        // ...
    }

    return new int[] {score, list.size()};
}

如果要显示多个不同的分数,需要将它们存储在不同的变量中。也许你应该对问题清单也这样做。您可以使用一组整数和一组ot列表。谢谢您的帮助,先生。。我如何调用getScoreForTopic方法?顺便说一句,这里的私有int[]getScoreForTopic(字符串主题,列出用户答案)有一些错误{那么我把它列成一个列表,好吗,先生?我的答案的最后一部分展示了如何使用
getScoreForTopic
。对于
userAnswers
,只要使用你拥有的任何包含答案的列表。如果它是
列表
,那么就使用它。我只是把
列表
放进去,因为我不知道它的类型如果我很烦人,我真的很抱歉,先生,但是您答案的第一部分显示NullPointerException
txtLogical.setText(String.valueOf(logicalResult[0]+“+logicalResult[1]))
。我应该将0更改为i或其他什么吗?这意味着
logicalResult
为null。您应该从
GetScoreFortic
中获取
logicalResult
,并且这永远不会返回null
txtLogical.setText(String.valueOf(GetScoreFortic(“Logical”,userAnswerLogical)+“+logicalResult[1]))
getScoreFortic
中获取
LocalResult
的代码正确吗?我尝试了这个,但NullPointerException再次显示。。