Java 忽略 boolean 评估

标签 java boolean

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.");
}

问题是:即使我将数字放入 JOptionPane 中, portField 也会弹出“仅允许使用数字”。据我所知,CharSequence 和我测试它只允许输入数字的方式是正确的,Java 会忽略整个 block 并跳转到 else 子句。

为什么会发生这种情况?我应该不使用 else 而使用 else if 吗?

最佳答案

包含表示包含整个0123456789。例如:“a0123456789b”

使用 p.matches("[0-9]*"); 代替。

关于Java 忽略 boolean 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17386051/

相关文章:

java - 使用Java 8新API的CollectionUtills编译报错

java - Antlr 中的词法分析器模式

java - 如何将 Treemap 写为 csv

java - 嵌套 for 循环中的 If-else block - 编译器声称我需要一个返回语句

c - 为什么 C 标准 bool 不是 bool_t?

ruby - 如何将 boolean 值转换为整数?

java - 如何使用restfb 将 360° 照片上传到 Facebook?

java - 以编程方式设置文本时 InputVerifier 未激活

Java boolean 算法检查位数是否为偶数

java - 如何将 boolean 值存储在数组中并用Java输出?