【问题标题】:Java - How to accept only integers on date input?Java - 如何在日期输入中只接受整数?
【发布时间】:2014-03-31 19:53:56
【问题描述】:

大家好,我的项目用于检查用户以 mm/dd/yyyy 格式输入的日期,但现在我需要对其进行修改,以便它拒绝任何非数字的内容。例如,如果我输入 12/5/abcd 或 aa/12/2014 它应该返回一个错误。目前,如果我在程序中输入一个字符或字母,它会给出一个错误,比如“你应该只输入有效的整数”。我正在使用“/”的分隔符来分隔月份和日期,并在年底使用 \r 或输入/返回以完成用户输入。

【问题讨论】:

  • 好的。你有没有尝试过?
  • 到目前为止你做了什么?正则表达式?

标签: java date integer java.util.scanner


【解决方案1】:

只有整数检查不起作用(考虑有人输入30-02-2013

您需要专门验证日期,您应该使用SimpleDateFormatsetLenient(false)

【讨论】:

    【解决方案2】:

    在我看来,使用 Java 正则表达式来验证输入日期使用下面的正则表达式。

    ([0-9]{2})\\([0-9]{2})\\([0-9]{4})

    【讨论】:

      【解决方案3】:

      如果您只关心数字与非数字,您可以使用简单的正则表达式进行验证。

      import java.util.regex.*;
      
      
      public class A{
          public static void main(String[] args) {
              String original =  "12/24/1014";
              Pattern mypattern = Pattern.compile("\\d{2}/\\d{2}/\\d{4}");
              System.out.println(mypattern.matcher(original).matches());
              // If not true, throw error.
          }
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用以下日期。

        SimpleDateFormat sdf = new SimpleDateFormat("mm/dd/yyyy");
        
            boolean isValidDate(string input) {
                 try {
                      format.parse(input);
                      return true;
                 }
                 catch(ParseException e){
                      return false;
                 }
            }
        

        【讨论】:

          【解决方案5】:

          只需放置一个 if 条件来检查 dd、mm 和 yy 上的整数实例。喜欢

          if(x instanceof Integer){
                   ...
          }
          

          【讨论】:

            猜你喜欢
            • 2019-07-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多