我正在将输入字符串转换为日期。当我尝试将两个日期作为输入Date of Birth
和Date of Joining
时,我不会得到任何满意的结果。如果输入无效,还可以帮我重新提交。提前致谢。
public class EmployeeInfo {
int id;
static String name, DoBS, DoJS;
Date DoB, DoJ;
public void checkDate(String dt) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy");
SimpleDateFormat sdf3 = new SimpleDateFormat("dd MMMM yyyy");
Date date = null;
try {
date = sdf1.parse(dt);
} catch (ParseException e) {
try {
date = sdf2.parse(dt);
} catch (ParseException e1) {
try {
date = sdf3.parse(dt);
} catch (ParseException e2) {
String invalid="Invalid,Retry";
System.out.println(invalid);
// TODO: Whatever to do when it doesn't find a date
}
}
}
setDateOfBirth(date);
setDateOfJoining(date);
}
void setDateOfBirth(Date DoB) {
this.DoB = DoB;
}
void setDateOfJoining(Date DoJ) {
this.DoJ = DoJ;
}
void print() {
System.out.println("User ID: " + id);
System.out.println("Name: " + name);
System.out.println("Date Of Birth: " + DoB);
System.out.println("Date of Joining: " + DoJ);
}
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the name: ");
name = scanner.nextLine();
System.out.println("Enter the Date Of Birth: ");
DoBS = scanner.nextLine();
System.out.println("Enter the Date of Joining: ");
DoJS = scanner.nextLine();
EmployeeInfo e = new EmployeeInfo();
e.checkDate(DoBS);
e.checkDate(DoJS);
e.print();
}
}
答案 0 :(得分:0)
所以我去为你解决了它,它有点被黑了,但会工作得很好 首先,您应该将EmployeeInfo作为单独的类 EmployeeInfo.java
public class EmployeeInfo {
int id;
static String name;
Date DoB, DoJ;
public void setName(final String name) {
this.name = name;
}
public void setDateOfBirth(final Date DoB) {
this.DoB = DoB;
}
public void setDateOfJoining(final Date DoJ) {
this.DoJ = DoJ;
}
void print() {
System.out.println("User ID: " + id);
System.out.println("Name: " + name);
System.out.println("Date Of Birth: " + DoB);
System.out.println("Date of Joining: " + DoJ);
}
}
然后你应该让你的主类运行并拥有所有逻辑 Main.java
public class Main {
public static Date checkDate(final String dt) throws ParseException {
final SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yyyy");
final SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
final SimpleDateFormat sdf3 = new SimpleDateFormat("dd MM yyyy");
Date date = null;
try {
date = sdf1.parse(dt);
} catch (final ParseException e) {
try {
date = sdf2.parse(dt);
} catch (final ParseException e1) {
try {
date = sdf3.parse(dt);
} catch (final ParseException e2) {
final String invalid = "Invalid,Retry";
System.out.println(invalid);
}
}
}
return date;
}
public static void main(final String[] args) throws ParseException {
final Scanner scanner = new Scanner(System.in);
final EmployeeInfo e = new EmployeeInfo();
System.out.println("Enter the name: ");
e.setName(scanner.nextLine());
Date d = null;
while (d == null) {
System.out.println("Enter the Date Of Birth: ");
d = checkDate(scanner.nextLine());
}
e.setDateOfBirth(d);
d = null;
while (d == null) {
System.out.println("Enter the Date of Joining: ");
d = checkDate(scanner.nextLine());
}
e.setDateOfJoining(d);
e.print();
}
}
希望这可以让您了解它是如何完成的。我恳请您比较两个源代码,您的amd我的并尝试了解已更改的内容并尝试找出原因(单独)。