初始化userChoice。如果将其设置为零,我的程序将编译

时间:2018-11-07 18:10:09

标签: java swing user-input

在我放置if(userChoice == 0)之前,它可以正常编译且没有错误。但这是将用户选择设置为无论他们是否单击提款按钮,都始终进行存款。我需要弄清楚如何将userChoice初始化为键盘输入。我尝试了userChoice = ();也不起作用。

这是唯一一个可行的if语句...但是接下来我的下一个if语句if(userChoice ==1)仍要存入。??

int userChoice;

String[] menuItems = {"Deposit", "Withdrawal", "Print Account Information", "Exit"};
int selection;
selection = JOptionPane.showOptionDialog(null, 
      "Please choose an item",
      bankAccount,
      JOptionPane.YES_NO_CANCEL_OPTION,
      JOptionPane.QUESTION_MESSAGE, 
      null,
      menuItems,
      "Deposit");
System.out.println(selection);

if (userChoice == 0) {
    depositStr = JOptionPane.showInputDialog("Enter your deposit amount: $");
    deposit = Double.parseDouble(depositStr);
    initialBalance = initialBalance + deposit;
    selection = JOptionPane.showOptionDialog(null, "Please choose an item",
      bankAccount,
      JOptionPane.YES_NO_CANCEL_OPTION,
      JOptionPane.QUESTION_MESSAGE, 
      null,
      menuItems,
      "Deposit");
  System.out.println(selection);
}

然后我有更多其他if语句,如else if(userChoice == 1)(1 aka提款)...永远不会使人打到1

我还有更多if else语句。很难在这里保持4个空格的间距。我唯一的编译问题是它说var userChoice未初始化。

1 个答案:

答案 0 :(得分:0)

您似乎将userChoiceselection混淆了,在这种情况下,这是完全相同的。因为您永远不会设置userChoice的值,所以它总是会存入的,因此,如果初始化为0,它将始终为0 ...

JOptionPane.showOptionDialog返回所选项目的索引

因此,您需要这种结构并删除userChoice

int selection = JOptionPane.showOptionDialog(... , menuItems, ...);

System.out.printf("You selected %s at position %d%n", menuItems[selection], selection);

if (selection == 0) {

} else if (selection == 1) {

}