在if语句中使用if语句的结果
我在写一个测验应用程序,当您回答正确的问题并且分数增加时,您会得到分数,我必须使用if语句。请任何人知道如何在if语句中使用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);
}
});
}
});
我可以在提供的代码想唯一的问题是,你正在测试如果一个JTextField的文本包含在你的GUI代码造物的特定字符串,“东京”。这是在GUI创建时以及在用户有机会输入数据之前运行的代码。为了解决这个问题,if测试应该在一些监听器中,也许是JButton的ActionListener。否则,我不知道你是否在if内意味着什么。
编辑
关于你的新的信息:
我写一个测验的应用程序,因为你回答正确的问题和你的分数增加你在哪里得到的痕迹,而我使用if语句。
您需要完全重新设计你的代码你很难在GUI中编码的代码逻辑,使一个非常刚性,巨大,并难以提高程序(如你发现了),因为代码逻辑必须随着程序状态的改变而改变。但是你应该从GUI中分离出你的程序逻辑,“模型”,“视图”,并尝试创建它们并独立地测试它们,类似于(或等于)“Model-View-控制器“或”MVC“程序设计。从模型开始,程序的“胆量”,并创建您的非GUI问题类,其中一个带有实例字段,方法和任何其他支持类。一旦经过测试和调试,然后尝试创建可使用此模型并显示其状态的GUI或视图类。您可能还想创建一个带有侦听器的“Controller”类,以帮助将视图连接到模型。
例如,如果你的测验是做一个选择题类型的程序,然后再考虑:
包含字符串问题,可能的答案字符串和正确答案字符串- 一个问题类。
- 给它一个
public boolean test(String testString)
,如果将正确答案String传递给它,则返回true。 - 允许Question类将可能的答案字符串的顺序随机化,该字符串可能在ArrayList中保存。
- 然后创建一个包含问题ArrayList的Quiz类。
然后创建一个GUI来显示这些。
- 我通常创建的GUI适合于创建JPanel,而不是JFrames以提高灵活性,然后在需要时创建JFrame。
- 创建一个显示问题字符串和随机可能答案字符串的QuestionPanel。
- 使用ButtonGroup将可能的答案显示为JRadioButton,以将选择限制为一个。
- 等....
您还需要一个类从每题一个文本文件中读取数据,并将该数据加载到测验类。
你还需要一个评分机制。
理解!! .....我已经完成了......我只是不想显示很多代码.....但是然后....我需要一些更多的分数增量语法! –
@ Presh_K7:然后澄清你的问题,花时间制定一个明确的具体问题,将基本代码烧写到[mcve]。为了帮助改进上述问题,请查看[Jon Skeet的*问题清单](http://codeblog.jonskeet.uk/2012/11/24/stack-overflow-question-checklist/)。这是他在[写完美的问题]上精彩的长篇文章的缩写版本(http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。 –
请将所有必需的变量作为类级变量,而不是在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++;
}
}
.
.
请多花一点时间和精力来解释您的问题,因为由于您提供的信息很少,所以这是相当混乱的。 –
为什么再次*?......关于这个问题还不清楚吗? –
我不能肯定地说,但你还没有发布[mcve],还没有澄清你是否在一个位上。 –