我正在编写一个测验应用程序,当你回答正确的问题并且你的分数增加时你得到分数,我必须使用if语句。任何人都知道如何在另一个if语句中使用if语句中的值!我有点困惑,它在这里工作......我感谢你的帮助!...这里有一个小代码示例;
int x = 3;
String xy = Integer.toString(x);
int y = 0;
String yy = Integer.toString(y);
JButton one = new JButton ("Quest 1");
one.addActionListener (new ActionListener (){
public void actionPerformed(ActionEvent p) {
JFrame ex = new JFrame ();
ex.setTitle("Question 1);
ex.setSize(400, 400);
ex.setLayout(new FlowLayout());
ex.setBackground(Color.WHITE);
JLabel ey = new JLabel ("What is the capital of Japan?);
Font tan = new Font ("Script MT Bold", Font.BOLD, 18);
ey.setFont(tan);
ey.setForeground(Color.BLACK);
ex.add(ey, BorderLayout.NORTH);
JButton answ = new JButton("submit");
JTextField g = new JTextField (10);
g.setFont(tan);
String ans = "Tokyo";
String merit = "Correct";
String flop = "wrong";
String mer = merit + ans;
String flip = flop + ans;
answ.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent p) {
if (g.getText.equals("Tokyo") {
JOptionPane.showMessageDialog(null, mer);
one.setText(xy);
}
else {
JOptionPane.showMessageDialog(null,flip);
one.setText(yy);
}
//In my next Action Listener, I would love to
//pick the score from the previous listener....and add to the next score....
//So that we have something like ....
//x(updated from previous listener) + x
ex.add(g, BorderLayout.SOUTH);
}
});
}
});
答案 0 :(得分:2)
我在所提供的代码中可以猜到的唯一问题是,如果JTextField的文本包含特定的字符串,则需要进行测试,"东京"在您的GUI创建代码中。这是在GUI创建时以及在用户有机会输入数据之前运行的代码。要解决这个问题,if测试应该在一些监听器中,也许是JButton的ActionListener。否则,如果在if。
中,我不知道你的意思修改强>
关于您的新信息:
我正在写一个测验应用程序,当你回答正确的问题并且你的分数增加时你得到分数,我必须使用if语句。
您需要完全重新设计代码,因为您需要在GUI中对代码逻辑进行硬编码,从而导致非常严格的巨大,并且难以增强程序(因为您和#39;重新发现)因为代码逻辑必须随着程序状态的变化而改变。
相反,你应该拆分你的程序逻辑,"模型"从GUI," view",并尝试创建它们并独立测试它们,类似于(或等于)"模型 - 视图 - 控制器"或者" MVC"程序设计。从模型开始,"胆量"程序和创建非GUI问题类,一个包含实例字段,方法和任何其他支持类。一旦对其进行了测试和调试,然后尝试创建可以使用此模型并显示其状态的GUI或视图类。您可能还想创建一个" Controller"具有帮助将视图连接到模型的侦听器的类。
例如,如果您的测验是多项选择类型的程序,请考虑:
public boolean test(String testString)
,如果正确的答案字符串被传递给它,则返回true。然后创建一个GUI来显示这些。
您还希望班级从每个问题的文本文件数据中读取数据,并将该数据加载到Quiz类中。
您还需要一种评分机制。
答案 1 :(得分:2)
请将所有必需变量作为类级别变量,而不是在actionlistner方法中声明它。类级变量将在所有方法中可见,因此不需要传递它们。将分数变量声明为类级别。
public class ClassTest {
int score=0;
public void acgionlistner1(Event ev)
{
if(ans.equals(userinput))
{
score++;
}
}
public void acgionlistner2(Event ev)
{
if(ans.equals(userinput))
{
score++;
}
}
.
.