繁体   English   中英

Java忽略布尔值评估

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM