isDigit()返回true为letter

1 java character wrapper

当运行以下程序并输入一个字母时,其中一个输出窗口显示该字母显然不是数字.为什么?

import javax.swing.JOptionPane;

/**
 * This program demonstrates some of the Character
 * class's character testing methods
 * 
 *
 */
public class CharacterTest {

public static void main(String[] args){
    String input;   //To hold the user's input
    char ch;    //To hold a single character

    //Get a character from the user and store
    //it in the ch variable
    input=JOptionPane.showInputDialog("Enter "+
            "any single character.");

    ch= input.charAt(0);

    //Test the character
    if(Character.isLetter(ch)){
        JOptionPane.showMessageDialog(null, "This is a letter.");
    }

    if(Character.isDigit(ch));{
        JOptionPane.showMessageDialog(null, "Thit is a digit.");
    }

    if(Character.isLowerCase(ch)){
        JOptionPane.showMessageDialog(null, "That is a lowercase"+
                " letter");
    }

    if(Character.isUpperCase(ch)){
        JOptionPane.showMessageDialog(null, "That is an uppercase"+
                " letter");
    }

    if(Character.isSpaceChar(ch)){
        JOptionPane.showMessageDialog(null, "That is an uppercase"+
                " letter");
    }

    if(Character.isWhitespace(ch)){
        JOptionPane.showMessageDialog(null, "That is an uppercase"+
                " letter");
    }

    System.exit(0);

}
}
Run Code Online (Sandbox Code Playgroud)

Bli*_*ndy 8

if(Character.isDigit(ch));{
        JOptionPane.showMessageDialog(null, "Thit is a digit.");
    }
Run Code Online (Sandbox Code Playgroud)

这意味着:

JOptionPane.showMessageDialog(null, "Thit is a digit.");
Run Code Online (Sandbox Code Playgroud)

没有任何条件,所以它将始终打印它是一个数字.

顺便说一句,空格和空格都没有(有趣的是Java如何区分两者)是"大写字母".

  • 换句话说,小心你的分号. (4认同)
  • 换句话说,在IDE中使用代码格式化程序.这将有助于您避免误导性格式化. (2认同)