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和我测试的只允许输入数字的方法是正确的,它忽略了整个代码块并跳转到else子句。
为什么会发生这种情况?我应该不使用else而改用else if吗?
发布于 2013-06-30 08:50:04
contains表示包含整个0123456789。例如:"a0123456789b"
请改用p.matches("[0-9]*");。
https://stackoverflow.com/questions/17386051
复制相似问题