我的程序现在做什么:
- 我用以下信息创建了一个人对象:
firstname
,lastname
,birthdate
(数据是不同的类)。 - 日期类有四个变量:日、月、年和 18+(是或否)。
有什么作用:我可以成功地创建一个带有 a 的personfirstname
对象。lastname
birthdate
我的人班(看起来像它的作品)。
public class Person {
public String firstName;
public String lastName;
public Date date;
public String toString() {
return (firstName + " " + lastName + " (" + date);
}
public Person(String firstName, String lastName, Date date) {
this.firstName = firstName;
this.lastName = lastName;
this.date = date;
}
}
我的班级,包括我的主班,我也有一个方法来创建我的人。
public static Person setName() {
String name;
String lastName
String inputBirthdate;
Date niceDate
Date newDate;
System.out.println("Firstname:");
firstName = userInput();
System.out.println("Lastname:");
lastName = userInput();
System.out.println("Birthday:");
inputBirthdate = userInput();
niceDate = new Date(inputBirthdate);
newDate = new Date(niceDate);
return new Gast(firstName, lastName, newDate);
}
然后我有我的 Date 类,在那里我检查日期的输入是否正确。请不要让我的 Date 类在没有第四个变量的情况下正常工作。
public class Date {
public String day;
public String month;
public String year;
public boolean child;
public String toString() {
return (day + "." + month + "." + year + "." + child);
}
/*Date(String day, String month, String year, boolean child) {
this.day = dag;
this.month = month;
this.year = year;
this.child = child;
}*/ //don't need this one, output is the same
public Date(Datum niceDate) {
int bYear = Integer.parseInt(niceDate.year;
int bMonth = Integer.parseInt(niceDate.day);
int bDay = Integer.parseInt(niceDate.day);
boolean child = false;
if (bYear > 1995) {
this.child= true;
} else if (bYear == 1995 && bMonth > 10) {
this.child = true;
} else if (bYear == 1995 && bMonth == 10 && bDay > 1) {
this.child = true;
} else {
this.child = false;
}
}
public Date(String birthdate) {
String patroon = "\\d{2}-\\d{2}-\\d{4}";
boolean b = birthdate.matches(patroon);
if (b) {
String[] str = birthdate.split("-");
for (String s: str)
this.day = str[0];
this.month = str[1];
this.year = str[2];
}
else {
System.out.println("Birthday is formatted wrong");
}
}
}
如果我运行它(是否检查成人的检查(检查看起来像它的工作!),但是,我的输入birthdate
返回 null:
Room 1: Name name (null.null.null)false //boolean works, date not
Room 2: available
我认为问题在于,在我Date
课堂上的第二种方法中,在将public Date(Date Nicedate)
日期解析为 int 后删除了我的日期。
所以基本上我只想返回布尔值并保持我的字符串完全相同,并且只编辑它们以将它们用作计算的 Int。
有人可以指出我正确的方向吗?可能这是一个非常简单的解决方案,但是我整天都在研究它并没有看到解决方案。
按要求编辑:(我在公共日期(基准 niceDate)中有这个语句,但日期仍然不会显示。嗯:
public Date(Datum niceDate) {
this.year = year;
this.day = day;
this.month = month;
int bYear = Integer.parseInt(niceDate.year;
int bMonth = Integer.parseInt(niceDate.day);
int bDay = Integer.parseInt(niceDate.day);
boolean child = false;
if (bYear > 1995) {
this.child= true;
} else if (bYear == 1995 && bMonth > 10) {
this.child = true;
} else if (bYear == 1995 && bMonth == 10 && bDay > 1) {
this.child = true;
} else {
this.child = false;
}
}
public Date(String birthdate) {
String patroon = "\\d{2}-\\d{2}-\\d{4}";
boolean b = birthdate.matches(patroon);
if (b) {
String[] str = birthdate.split("-");
for (String s: str)
this.day = str[0];
this.month = str[1];
this.year = str[2];
}
else {
System.out.println("Birthday is formatted wrong");
}
}
}