检查字符是否不是数字?

时间:2014-04-14 20:28:08

标签: java

在我的程序中,我需要检查并查看字符是否确定索引是否为数字。我设置的条件检查并确定它是否为数字

//Check to make sure all other characters are digits
        else if (Character.isDigit(militaryTime.charAt(0)))
        {
            System.out.println(militaryTime +
                " is not a valid miliary time." );
        }
        else if (Character.isDigit(militaryTime.charAt(1)))
        {
            System.out.println(militaryTime +
                " is not a valid miliary time." );
        }
        else if (Character.isDigit(militaryTime.charAt(3)))
        {
            System.out.println(militaryTime +
                " is not a valid miliary time." );
        }
        else if (Character.isDigit(militaryTime.charAt(4)))
        {
            System.out.println(militaryTime +
                " is not a valid miliary time." );
        }

但是,当我运行它时,我意识到了问题,它表示那些应该是有效的时间,并不是。当我意识到,它正在检查索引是否是一个数字,如果是这样,它返回的时间是无效的。

如何制作它以便检查它是否不是数字并因此显示错误的输出,否则它只是继续?我试过isLetter,但那只是我的程序崩溃了。

2 个答案:

答案 0 :(得分:3)

使用

if (!Character.isDigit(whatever))

如果你想要一些非常简单易用的东西 - 使用正则表达式:^\d{4}$是正好四位数的正则表达式。

更新以捕获无效小时,您需要更复杂的正则表达式。 ^([01]\d\d\d|2[0-3]\d\d)$,或使用Javas SimpleDateFormat

答案 1 :(得分:0)

!声明的表达式前面使用if; !表示“不”:

// if militaryTime.charAt(0) is not a digit
if (!Character.isDigit(militaryTime.charAt(0))) {
   // ...
}