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

我正在尝试构建一个程序,该程序要求用户提供其DOB,如果不是DD / MM / YYYY格式,则会引发错误。有谁知道如何实现这一目标?我很抱歉,如果我没有做足够的研究,但我真的找不到任何关于格式化日期输入的内容。感谢您的帮助。


繁华开满天机
浏览 102回答 3
3回答

米琪卡哇伊

您需要在读取输入后对其进行处理。正则表达式在此任务中非常有效。 将检查用户提供的字符串是否为 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}

有只小跳蛙

如果这对您有帮助,这是整个程序。这还会使用 DateTimeFormatter 验证日期。因此,如果用户输入 ,它将失败。32/01/2000import 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;    }}

富国沪深

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;            }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java