0
  String inputRules = JOptionPane.showInputDialog
  (
  "Enter your rules. \n" +
  "In the form: a=x"
  );

    boolean gotGoodRuleInput = false;

    while (!gotGoodRuleInput)
    {
      gotGoodRuleInput = true;   

      char a = inputRules.charAt(0);

      for (int i= 2; i<inputRules.length(); i++)
      {
      char x = inputRules.charAt(i);
      if (a == x)
      {
        JOptionPane.showMessageDialog
        ( 
          null,
          "a can not equal x",
          "Error",
          JOptionPane.ERROR_MESSAGE
        );
        gotGoodRuleInput = false;
       }
      }
    }

您好我正在尝试检查用户输入,如果 x 处的输入等于 a 那么它将给出错误对话框。我遇到的问题是错误对话框“a 不能等于 x”不断出现,并且在点击确定时不会关闭。我认为它与 for 循环有关,但我无法弄清楚。

4

3 回答 3

1

您的设置inputRules在循环之外,因此一旦您得到错误条件,您将永远无法摆脱它。

于 2013-02-27T04:55:53.137 回答
1

逻辑问题,看你的逻辑

while (!gotGoodRuleInput)
    {

...

如果错误

gotGoodRuleInput = false;

怎么了:  

  1. 在条件下检查
  2. 将while条件设置为false
  3. 读一个
  4. 循环遍历所有输入值
  5. 检查代码
  6. 显示对话框
  7. 如果以上条件为真,则设置while条件为真
  8. 去第一步
于 2013-02-27T05:05:59.540 回答
0

就像约翰说的那样, inputRules 在循环之外,所以什么都不会改变。不确定这是否是您要完成的任务,但是否可以将循环全部替换。

String[] input = inputRules.split("=");
if (input[0].equals(intput[1])) {
    JOptionPane.showMessageDialog
    ( 
        null,
        "a equals x"
    );
    gotGoodRuleInput = true;
} else {
    JOptionPane.showMessageDialog
    ( 
        null,
        "a can not equal x",
        "Error",
        JOptionPane.ERROR_MESSAGE
    );
    gotGoodRuleInput = false;
}
于 2013-02-27T05:04:33.653 回答