为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法使用扫描仪格式化用户的输入?

有没有办法使用扫描仪格式化用户的输入?

繁华开满天机 2022-08-03 16:23:51
我正在尝试构建一个程序,该程序要求用户提供其DOB,如果不是DD / MM / YYYY格式,则会引发错误。有谁知道如何实现这一目标?我很抱歉,如果我没有做足够的研究,但我真的找不到任何关于格式化日期输入的内容。感谢您的帮助。
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您需要在读取输入后对其进行处理。正则表达式在此任务中非常有效。 将检查用户提供的字符串是否为 DD/MM/YYYY。^\\d{2}/\\d{2}/\\d{4}$


因此,您可以按如下方式比较用户输入:


if(userStr.matches("^\\d{2}/\\d{2}/\\d{4}$")){

    //Do stuff if input is good

}else{

    //Do stuff if input is bad

}


查看完整回答
反对 回复 2022-08-03
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果这对您有帮助,这是整个程序。这还会使用 DateTimeFormatter 验证日期。因此,如果用户输入 ,它将失败。32/01/2000


import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

import java.time.format.DateTimeParseException;

import java.util.Scanner;


public class DateOfBirth {

    public static void main(String[] args) {

        System.out.println("Please enter your DOB");

        Scanner myScanner = new Scanner(System.in);

        String input = myScanner.next();

        while (!validDate(input)) {

            System.out.println("ERROR: Invalid date. Please enter your DOB");

            input = myScanner.next();

        }

        myScanner.close();

    }


    private static boolean validDate(String input) {

        try {

            DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("dd/MM/yyyy");

            LocalDate.parse(input, inputFormat);

        } catch (DateTimeParseException e) {

            return false;

        }

        return true;

    }

}


查看完整回答
反对 回复 2022-08-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

boolean isDOB(String input) {

        String[] inputs = input.split("/");

        if(inputs.length!=3)

            return false;

        int days = Integer.parseInt(inputs[0]);

        int month = Integer.parseInt(inputs[1]);        

        if(days>31 || month>12 || inputs[2].length()!=4) {

            return false;           

        }

        return true;        

    }


查看完整回答
反对 回复 2022-08-03
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信