我正在编写if语句来检查我的GUI中的swing组件(JtextField& JcomboBox(x2))是否为空。我最初只是为JTextField和两个JComboBox为空的场景做了一个if语句,因此出现了dispay错误对话框:
if (NameOfCruise.equals("") && startLValue.equals("") && endLValue.equals("")) {
JOptionPane.showMessageDialog(Frame2,
"Please Complete Form.", "Error",
JOptionPane.ERROR_MESSAGE);
System.out.print("Please Complete Form.");
Frame2.setVisible(true);
}
然而,经过进一步思考,我意识到还有更多的场景我还没有考虑过。我意识到我需要针对以下场景的错误消息: 1. Cruise Name,startL或endL值都是空的。 2.如果Cruise Name留空,但同时选择StartL和EndL。 3.如果Cruise Name& StartL保持空白但选择了EndL。 4.如果Cruise Name& EndL保持空白但选择了StartL。
&安培;可能还有更多我尚未实现的东西。我开始实现上述if语句,但遇到了一个问题。
到目前为止,这是我的代码:
// 2. Error message CruiseName left empty but StartL and EndL are both selected.
if(NameOfCruise.equals("") && !startLValue.equals("") || !endLValue.equals("")){
JOptionPane.showMessageDialog(Frame2,
"Please enter Cruise Name.", "Error",
JOptionPane.ERROR_MESSAGE);
System.out.print("Name of Cruise not entered. Please enter Cruise Name.\n");
Frame2.setVisible(true);
}
// 3. Error message if Name of Cruise & StartL left empty but EndL is selected.
if(startLValue.equals("") && NameOfCruise.equals("") || !endLValue.equals("")){
JOptionPane.showMessageDialog(Frame2,
"Please Select a Start Location.", "Error",
JOptionPane.ERROR_MESSAGE);
System.out.print("Select a start location.\n");
Frame2.setVisible(true);
}
问题:
如果查看上面的代码,我测试的方式(3)是将Cruise名称和StartL位置留空并输入EndL值。但是我想出任务(2)中的错误对话框 - 这是合理的,因为游轮名称是空的。
问题(S): 1.如何编写if语句以便为每个方案显示相应的错误消息?目前,我收到了每条消息的两个错误对话框。 2.是否有更好,更有效的方法来编码这些场景,而不是为每个案例编写if语句。 你能说出我失踪的任何情景吗?
答案 0 :(得分:1)
我要做的是,而不是制作一万亿个不同的if
语句,而不是制作3. StartL
一个用于EndL
,一个用于NameOfCruise
。它更紧凑,更简单,您不必为每个不同的组合方案制作if
语句。
答案 1 :(得分:0)
一个非常抽象的答案,每个输入有三个输入,两个状态(空或不),导致八种不同的情况,但其中一些是正常的。
将三个布尔值映射到整数0..7。创建一个包含8个条目的Sting []表,null表示无错误,带有相应错误消息的非null条目,并根据映射的结果进行选择。
表通常是简化应用程序逻辑的好方法。
答案 2 :(得分:0)
根据我的个人经验,我会尝试分别检查每个条件,一个接一个。如果条件成立:很好。如果不是,我会存储建议的操作(“请输入游轮名称”,“请选择开始位置”等),即在字符串列表中。
检查完所有条件并且字符串列表不为空后,您可以显示JOptionPane并使用列表中的信息填充它。因此,不应满足的每个条件都应打印在窗格内。