【问题标题】:Use result from if statement in another if statement [closed]在另一个 if 语句中使用 if 语句的结果 [关闭]
【发布时间】:2016-09-24 17:35:27
【问题描述】:

我正在编写一个测验应用程序,当你回答正确的问题并且你的分数增加时,你会得到分数,我必须使用 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);
        }
        });
}
});

【问题讨论】:

  • 请多花点时间和精力来解释您的问题,因为您提供的信息很少,这很令人困惑。
  • 为什么再次投反对票?....这个问题有什么不清楚的地方?
  • 我不能肯定地说,但你还没有发布一个minimal reproducible example,并且还没有在一个 if 位内澄清你的 if。

标签: java if-statement int jbutton actionlistener


【解决方案1】:

在提供的代码中我能猜到的唯一问题是您正在测试 JTextField 的文本是否在您的 GUI 创建代码中包含特定字符串“Tokyo”。这是在创建 GUI 时以及在用户有机会输入数据之前运行的代码。为了解决这个问题,if 测试应该在某个侦听器中,也许是 JButton 的 ActionListener。否则我不知道你所说的 if 中的 if 是什么意思。


编辑

关于您的新信息:

我正在编写一个测验应用程序,当你回答正确的问题时你会获得分数并且你的分数会增加,我必须使用 if 语句。

您需要完全重新设计您的代码,因为您在 GUI 中对代码逻辑进行硬编码,这使得程序非常僵化、庞大且难以增强(因为您正在找出来)因为代码逻辑必须随着程序状态的变化而变化。

相反,您应该将程序逻辑、GUI 中的“模型”、“视图”分开,并尝试创建它们并独立测试它们,类似于(或等于)“模型-视图-控制器” ”或“MVC”程序设计。从模型开始,程序的“胆量”,创建非 GUI Question 类,一个包含实例字段、方法和任何其他支持类的类。一旦经过测试和调试,然后尝试创建可以使用此模型并显示其状态的 GUI 或视图类。您可能还想创建一个带有侦听器的“Controller”类,以帮助将视图连接到模型。

例如,如果您的测验是多选题,那么请考虑:

  • 包含问题字符串、可能答案字符串和正确答案字符串的 Question 类。
  • 给它一个public boolean test(String testString),如果正确的答案字符串被传递给它,则返回true。
  • 允许 Question 类随机化可能的答案字符串的顺序,可能保存在 ArrayList 中。
  • 然后创建一个包含问题 ArrayList 的 Quiz 类。

然后创建一个 GUI 来显示这些。

  • 我通常创建用于创建 JPanel 的 GUI,而不是 JFrame 以提高灵活性,然后在需要时创建 JFrame。
  • 创建一个 QuestionPanel,显示问题字符串和随机的可能答案字符串。
  • 将可能的答案显示为带有 ButtonGroup 的 JRadioButtons 以将选择限制为一个。
  • 等等……

您还需要一个类从文本文件中读取每个问题的数据,并将该数据加载到 Quiz 类中。

您还需要一个评分机制。

【讨论】:

【解决方案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++;
            }
        }
.
.

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 2015-04-27
    • 2013-10-18
    • 2022-01-06
    相关资源
    最近更新 更多