我是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));
}
}
// 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
答案 0 :(得分:0)
任务是:
客户应按以下格式输入ID:
xddmmyyyy
这意味着要求ID,所有9个字符,然后验证:
System.out.println("Please enter your ID as xddmmyyyy: ");
String id = scanner.nextLine();
// Validate here
验证意味着:
a
,A
,b
或B
。使用charAt(0)
获取第一个字符。substring()
获取8个字符,然后使用DateTimeFormatter
和LocalDate.parse()
同时验证它并以LocalDate
生日。接下来你需要计算年龄:
仅使用出生年份计算年龄
您的代码使用的是完整日期,而不仅仅是年份。相反,这样做:
int age = Year.now().getValue() - birthDate.getYear();
我会把剩下的代码留给你,这样你就可以学会这样做。