首先,我想告诉大家我刚开始在大学学习Java。所以请原谅我作为新手所犯的任何错误。
基本上我想用这段代码实现的是使用扫描仪功能计算某人的年龄。有人输入他们的出生日期(格式为YYYY-MM-DD),我的代码计算他们的年龄。
代码无效,因为我认为第3行: 字符串dob = input.nextInt(); 写入错误,无法通过其下方的代码行识别。
如果我将该行更改为 String dob =“1988-11-29”; 它可以工作,但是我的扫描仪功能没用。
有人可以帮我吗? 提前谢谢!
Scanner input = new Scanner(System.in);
System.out.println("Enter your DOB pls");
String dob = input.nextInt();
int yearDOB = Integer.parseInt(dob.substring(0, 4));
int monthDOB = Integer.parseInt(dob.substring(5, 7));
int dayDOB = Integer.parseInt(dob.substring(8, 10));
SimpleDateFormat
dateFormat = new SimpleDateFormat("yyyy");
Date date = new Date();
int thisYear = Integer.parseInt(dateFormat.format(date));
dateFormat = new SimpleDateFormat("MM");
date = new java.util.Date();
int thisMonth = Integer.parseInt(dateFormat.format(date));
dateFormat = new SimpleDateFormat("dd");
date = new java.util.Date();
int thisDay = Integer.parseInt(dateFormat.format(date));
int age = thisYear-yearDOB;
if(thisMonth < monthDOB){ age = age-1;
} if(thisMonth == monthDOB && thisDay < dayDOB)
{ age = age-1;
}
System.out.println("The age of user is : " + age);
答案 0 :(得分:0)
当你写
String dob = input.nextInt()
您试图将int
放入String
:dob
。如果您尝试阅读整个nextInt()
行,1988-11-29
是错误的方法。
您可能想尝试Scanner.nextLine或其他一些返回String
答案 1 :(得分:0)
Scanner s=new Scanner(System.in);
String dob=s.next("[12][0-9]{3}-[0-9]{2}-[0-3][0-9]");
int yearDOB = Integer.parseInt(dob.substring(0, 4));
int monthDOB = Integer.parseInt(dob.substring(5, 7));
int dayDOB = Integer.parseInt(dob.substring(8, 10));
Calendar c=Calendar.getInstance();
int thisYear = c.get(Calendar.YEAR);
int thisMonth = c.get(Calendar.MONTH)+1;
int thisDay = c.get(Calendar.DAY_OF_MONTH);
// the rest is up to you