我有这个代码要求输入用户名和密码。只是一个简单的JOptionPane。程序应询问输入,如果用户没有在用户名中写入任何输入,则应显示错误消息并显示相同的上一个对话框,询问用户名。但是,它不起作用。即使我没有输入任何内容,它仍然会进入密码对话框。请检查我的逻辑,我可能有点困惑;还有一种方法可以检查showInputDialog
中的输入是否为字符串?有点像整数NumberFormatException
? catch方法的异常也不起作用。 :)提前谢谢。
public class SwingExercise {
public static void main(String[] args) {
String name = null;
boolean input = true;
try {
while (input) {
while (name == null) {
name = JOptionPane.showInputDialog(null, "Enter username:");
if (name == null) {
JOptionPane.showMessageDialog(null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
}
}
String pw = JOptionPane.showInputDialog(null, "Enter password:");
input = false;
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Invalid input.", "Error", JOptionPane.ERROR_MESSAGE);
}
}
答案 0 :(得分:3)
这应该可以解决问题:
if(name == null || name.equals("")) {
JOptionPane.showMessageDialog(null, "No input.", "Error", JOptionPane.ERROR_MESSAGE);
name = null;
}
关于这个问题:
还有一种方法可以检查showInputDialog中的输入是否为字符串?
showInputDialog()
返回String,偶数,它将它们作为String读取。
答案 1 :(得分:2)
尝试声明
String name = "";
而不是
String name = null;
然后在循环条件和if条件中检查字符串名称是否为空。
while (name.equals(""))
...
if (name.equals(""))
那是因为showInputDialog方法返回一个String,并且比较String的正确方法是使用objectString.equals(anotherObjectString),你将showInputDialog返回的String与null进行比较,总是返回false。