[英]Java is ignoring a boolean evaluation
if (!(portField.getText().equals(""))) {
String p = portField.getText();
CharSequence numbers = "0123456789";
if (p.contains(numbers)) {
listener = new ServerSocket(Integer.parseInt(p));
while (true) {
Socket socket = listener.accept();
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("Hi there, human.");
} finally {
socket.close();
}
}} else {
JOptionPane.showMessageDialog(null, "Only numbers are allowed.");
}
} else {
JOptionPane.showMessageDialog(null, "Please input a port.");
}
问题是:即使我在portField
输入数字,也会弹出JOptionPane
并说“仅允许数字”。 据我所知, CharSequence
和我测试它只允许输入数字的方式是正确的,Java忽略了整个块并跳转到else
子句。
为什么会这样呢? 如果我不使用else
和使用else if
呢?
contains
包含整个0123456789
。 例如: "a0123456789b"
使用p.matches("[0-9]*");
代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.