用户输入两次询问

时间:2011-03-07 17:19:46

标签: java

下面的代码要求输入两次数字。

public class Palindrome {

  public static void main(String[] args) {
     boolean x;
     boolean display;

     x = check();
     display = display();
  }

  private static int getUserInput() {
     int inputNumber = 0;
     String answer = JOptionPane.showInputDialog(null, "Please enter a five digit number","Enter a number");
     inputNumber = Integer.parseInt(answer);
     return inputNumber;
  }

  private static boolean check(){
     int inputNumber = getUserInput();
     int number = inputNumber;
     int[] myArray = new int[5];

     for (int i = 0; i < myArray.length; i++) {
        myArray[i] = (int) (number /(Math.pow(10,i)) % 10);
     }

     if(myArray[0] == myArray[4] && myArray[1] == myArray[3])
        return true;
     else
        return false;
  }

  public static boolean display(){
     if (check() == true) {
        JOptionPane.showMessageDialog(null, "This number is a Palindrome",
           "Excellent!",
           JOptionPane.INFORMATION_MESSAGE);
     } else
        JOptionPane.showMessageDialog(null,
           "Number is not a Palindrome!",
           "Sorry",
           JOptionPane.ERROR_MESSAGE);
        return false;
     }
}

我希望它只问一次。

由于

4 个答案:

答案 0 :(得分:4)

这是因为您在顶层呼叫check()(要求输入),但是您再次呼叫check() 作为display()的一部分。因此,第一个输入被完全忽略(尝试它,只有第二个输入会影响消息)。你的调用树看起来像这样:

main()
 |- check()
 |  |- getUserInput(...)
 |  |   |- *(show input dialog)*
 |
 |-display()
 |  |- check()
 |  |   |- getUserInput(...)
 |  |   |   |- *(show input dialog)*
 |  |
 |  |- (show message dialog)

我怀疑你的意思是将之前的执行结果作为变量传递给display(),而不是再次调用该方法。这可能看起来像这样:

public static void main(String[] args) {
    boolean x = check(); // No real need to declare the variable separately
    boolean display = display(x);
}

...

public static boolean display(boolean check) {
    if (check) { // P.S. no need to explicitly use the "== true"
        ...
    } else
    ...
}

或者,您可以放弃check()main的号码,而来自display方法的号码。在我看来,将“接收输入”和“显示输出”方法作为两个独立的方法进行编程实践是更好的。同样处理输入的输出方法是非平凡系统中的噩梦。

答案 1 :(得分:2)

您的display()方法第二次调用check()

答案 2 :(得分:1)

您已拨打check()方法两次。每次都会显示输入对话框。

答案 3 :(得分:1)

您首先在主函数中调用check():

x = check();

然后再次显示功能

if(check() == true)

如果您只是从main调用display,那么您的代码应该没问题。