我怎么能用生日生成一个字母?

时间:2017-05-05 16:42:08

标签: java

我是java的新手,我的老师要求提供有关购物的Java代码。

这是ID的要求:

  

客户应按以下格式输入ID:xddmmyyyy

     
      
  • ddmmyyyy代表出生日期,x可以是a,A,b或B.
  •   
  • 如果顾客年龄超过70岁(仅使用出生年份计算年龄)
  •   
  • 如果客户的ID以a或A开头,则他们有权享受15%的折扣
  •   

我做了这个,但用户应先输入一封信,然后输入他们的生日 - 这是错误的。

如何在一台扫描仪中生成xddmmyyy之类的内容?

System.out.println("Enter letter ");
y = scanner.nextLine();

try {
    if (y.equalsIgnoreCase("a") || y.equalsIgnoreCase("b")) {
        System.out.println("Please enter your ID as YYYY-MM-DD: ");
        String input = scanner.nextLine();
        LocalDate dob = LocalDate.parse(input);

        System.out.println("your ID is :" + y + getAge(dob));
    }
}

方法:getAge

// Returns age given the date of birth
public static int getAge(LocalDate dob) {
    LocalDate curDate = LocalDate.now();
    return Period.between(dob, curDate).getYears();
}

实际上,我的输出是:B30。有人可以帮助我吗?输出应该像这样的例子:

  

您的身份证号码是:B10021987

1 个答案:

答案 0 :(得分:0)

任务是:

  

客户应按以下格式输入ID:xddmmyyyy

这意味着要求ID,所有9个字符,然后验证:

System.out.println("Please enter your ID as xddmmyyyy: ");
String id = scanner.nextLine();
// Validate here

验证意味着:

  • 长度必须为9。
  • 第一个字符必须是aAbB。使用charAt(0)获取第一个字符。
  • 其他8个字符必须是日期。使用substring()获取8个字符,然后使用DateTimeFormatterLocalDate.parse()同时验证它并以LocalDate生日。

接下来你需要计算年龄:

  

仅使用出生年份计算年龄

您的代码使用的是完整日期,而不仅仅是年份。相反,这样做:

int age = Year.now().getValue() - birthDate.getYear();

我会把剩下的代码留给你,这样你就可以学会这样做。