Java 带有两个日期的日期格式
我正在将输入字符串转换为日期。当我尝试给出两个日期作为输入Java 带有两个日期的日期格式,java,date,Java,Date,我正在将输入字符串转换为日期。当我尝试给出两个日期作为输入出生日期和加入日期,我没有得到任何满意的结果。如果输入无效,请帮助我重新提示。提前谢谢 public class EmployeeInfo { int id; static String name, DoBS, DoJS; Date DoB, DoJ; public void checkDate(String dt) throws ParseException { SimpleDateFormat sdf1 = new Sim
出生日期
和加入日期
,我没有得到任何满意的结果。如果输入无效,请帮助我重新提示。提前谢谢
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();
}
}
所以我去帮你修好了,虽然有点乱,但效果很好 首先,您应该将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和我的amd,并尝试了解发生了什么变化,并尝试找出原因(您自己)。您不需要在
try中try
输入的是姓名、出生日期和加入日期。我想把这些东西印回去。日期验证是最重要的。如果您使用“tryParse”或类似的方法,代码会更“酷”that@cricket_007try
内的try
用于检查不同的日期格式。setDateOfBirth(date);加入的设定日期(日期)代码>可能是问题所在,因为日期始终相同..当我输入有效日期时,会发生异常。。为什么?只是注意到,日期格式毫无意义。更新代码我认为这不是错误。。d=checkDate(scanner.nextLine())中的某物代码>在main方法中。@AjnasO For mee它工作正常,请参见输出:输入姓名:karel输入出生日期:10-10/1856无效,重试输入出生日期:10-10-1856输入加入日期:10/10/1845用户ID:0姓名:karel出生日期:周五10月10日00:00:00 CET 1856加入日期:周五10月10日00:00:00 CET 1845如果您有na错误,请提供stact traceEnter姓名:Ajnas输入出生日期:28/04-1996无效,重试输入出生日期:1996年4月28日线程“main”中的异常java.lang.ClassCastException:java.util.Date不能在Employee.Main1.checkDate(Main1.java:18)在Employee.Main1.main(Main1.java:45)转换为java.sql.Date这是遇到的错误。已尝试printstacktrace()代码>仍然相同。。