1

首先,我想告诉大家,我刚开始在大学学习Java。所以请原谅我作为新手犯的任何错误。

基本上我想用这段代码实现的是使用 Scanner 函数计算某人的年龄。有人输入他们的出生日期(格式为 YYYY-MM-DD),我的代码会计算他们的年龄。

代码不起作用,因为我认为第 3 行: String 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);
4

2 回答 2

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
于 2013-09-10T16:38:29.420 回答
0

当你写

String dob = input.nextInt()

您正在尝试将 anint放入您的String: dobnextInt()如果您尝试阅读整行1988-11-29.

您可能想尝试Scanner.nextLine或其他返回 aString

于 2013-09-10T16:29:29.040 回答