isDigit () возвращает true для письма - PullRequest
1 голос
/ 01 июня 2011

При запуске следующей программы и вводе буквы одно из окон вывода говорит, что буква является цифрой, когда ее явно нет.Почему?

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);

}
}

1 Ответ

8 голосов
/ 01 июня 2011
if(Character.isDigit(ch));{
        JOptionPane.showMessageDialog(null, "Thit is a digit.");
    }

Это означает:

JOptionPane.showMessageDialog(null, "Thit is a digit.");

без каких-либо условий, поэтому он всегда будет печатать, что это цифра.

Кстати, ни пробелов, ни пробелов (забавно, какЯва различает) являются "заглавными буквами".

...