Java 如何在一页中显示不同类别的不同分数
我有3个不同的类别(每个不同的帧),它们通过“继续”按钮连接,最后一个帧是“完成”按钮。单击“完成”按钮后,我想显示每个类别的结果(按分数),但每当我单击“完成”按钮时,最后一个类别的分数与两个类别的分数相同。请帮帮我,我不知道怎么做 请注意,我在另外两个框架中没有代码以结果形式显示分数Java 如何在一页中显示不同类别的不同分数,java,Java,我有3个不同的类别(每个不同的帧),它们通过“继续”按钮连接,最后一个帧是“完成”按钮。单击“完成”按钮后,我想显示每个类别的结果(按分数),但每当我单击“完成”按钮时,最后一个类别的分数与两个类别的分数相同。请帮帮我,我不知道怎么做 请注意,我在另外两个框架中没有代码以结果形式显示分数 public Result(int score, ArrayList<Questions> list) { initComponents(); txtLogical.setText(
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
,只要使用你拥有的任何包含答案的列表。如果它是列表
,那么就使用它。我只是把列表
放进去,因为我不知道它的类型如果我很烦人,我真的很抱歉,先生,但是您答案的第一部分显示NullPointerExceptiontxtLogical.setText(String.valueOf(logicalResult[0]+“+logicalResult[1]))
。我应该将0更改为i或其他什么吗?这意味着logicalResult
为null。您应该从GetScoreFortic
中获取logicalResult
,并且这永远不会返回nulltxtLogical.setText(String.valueOf(GetScoreFortic(“Logical”,userAnswerLogical)+“+logicalResult[1]))
从getScoreFortic
中获取LocalResult
的代码正确吗?我尝试了这个,但NullPointerException再次显示。。