录入会员生日时,形式必须是"月/日",如“09/12;录入的密码必须在6~10位之间;允许重复录入,直到输入正确位置。”

结果为
请输入会员生日<月/日:00/00>: 12.9
生日形式输入错误!

请输入会员生日<月/日:00/00>: 12/9
该会员生日是:12/9

请输入会员密码<6-10位>: 8101910
该会员密码是:8101910

参考代码如下:

import java.util.Scanner;

public class Member {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入生日并检查生日格式是否正确
        String birthday;
        do {
            System.out.print("请输入会员生日<月/日:00/00>:");
            birthday = scanner.nextLine();
        } while (!isValidBirthdayFormat(birthday) && prompt("生日形式输入错误!"));

        System.out.println("该会员生日是:" + birthday);

        // 输入密码并检查密码长度是否符合要求
        String password;
        do {
            System.out.print("请输入会员密码<6-10位>:");
            password = scanner.nextLine();
        } while (!isValidPasswordLength(password) && prompt("密码长度不符合要求!"));

        System.out.println("该会员密码是:" + password);
    }

    private static boolean isValidBirthdayFormat(String birthday) {
        // 检查生日格式是否为"月/日"
        return birthday.matches("\\d{1,2}/\\d{1,2}");
    }

    private static boolean isValidPasswordLength(String password) {
        // 检查密码长度是否在6-10位之间
        return password.length() >= 6 && password.length() <= 10;
    }

    private static boolean prompt(String message) {
        System.out.println(message);
        return true;
    }
}
public class AccountTest {
    public static void main(String[] args) {
        while (true) {
            System.out.print("请输入会员生日<月/日:00/00>: ");
            Scanner scanner = new Scanner(System.in);
            String birthday = scanner.nextLine();
            String[] split = birthday.split("/");
            if (split.length != 2) {
                System.out.println("生日形式输入错误!");
                continue;
            }

            try {
                int month = Integer.parseInt(split[0]);
                int day = Integer.parseInt(split[1]);

                // 判断月份和天数的有效性
                // 这里给出一个简单的判断,实际需要按月判断天数的最大值
                if (month < 1 || month > 12 || day < 1 || day > 31) {
                    System.out.println("生日形式输入错误!");
                    continue;
                }
            } catch (RuntimeException e) {
                System.out.println("生日形式输入错误!");
                continue;
            }

            System.out.println("该会员生日是:" + birthday);
            System.out.print("请输入会员密码<6-10位>:");
            String password = scanner.nextLine();
            if (password.length() < 6 || password.length() > 10) {
                System.out.println("密码输入错误!");
                continue;
            }
            System.out.println("该会员密码是:" + password);
            break;
        }
    }
}
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7504767
  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题的解决方案如下:

    1. 录入会员生日时,形式必须是“月/日”的格式,如果输入错误会有怎样的提示?

    (1) 在前端页面上,可以采用正则表达式检验生日格式是否符合“月/日”的形式。代码示例如下:

    <input type="text" name="birthday" onblur="checkBirthday()" />
    <script>
    function checkBirthday() {
        var birthday = document.getElementsByName("birthday")[0].value;
        var pattern = /^([1-9]|1[0-2])\/([1-9]|[1-2][0-9]|3[0-1])$/;
        if (!pattern.test(birthday)) {
            alert("生日格式应为:月/日");
            document.getElementsByName("birthday")[0].focus();
        }
    }
    </script>
    

    (2) 在后端程序中,也可以采用正则表达式检验生日格式是否符合“月/日”的形式。代码示例如下:

    public boolean checkBirthday(String birthday) {
        String pattern = "^(0?[1-9]|1[0-2])\\/(0?[1-9]|[1-2][0-9]|3[0-1])$";
        return Pattern.matches(pattern, birthday);
    }
    

    如果输入错误,则可以通过抛出异常或者返回错误信息来提示用户重新输入。

    1. 录入密码时,密码的长度必须是6~10位之间,如果不符合要求该如何提示并重新输入,直到正确为止?

    在前端页面上,可以通过添加maxlength属性限制密码长度,并在前端页面上对密码长度进行限制和提示。代码示例如下:

    <input type="password" name="password" maxlength="10" onblur="checkPassword()" />
    <script>
    function checkPassword() {
        var password = document.getElementsByName("password")[0].value;
        if (password.length < 6 || password.length > 10) {
            alert("密码长度应为6~10位");
            document.getElementsByName("password")[0].focus();
        }
    }
    </script>
    

    在后端程序中,也可以对密码长度进行检验。代码示例如下:

    public boolean checkPassword(String password) {
        return password.length() >= 6 && password.length() <= 10;
    }
    

    如果输入的密码长度不符合要求,则可以通过抛出异常或者返回错误信息来提示用户重新输入。

    需要注意的是,在前端页面上只是起到了一种提示作用,而在后端程序中才真正进行了数据校验并发出了错误提示。因此,对于需要对数据进行严格控制的项目来说,后端程序的数据校验是必不可少的。