我有3节课; Person,PersonProgram(主要)和Date。日期类包含3个日,月和年变量。我正在尝试在Person类中创建一个方法,该方法返回一个字符串格式为firstname lastname middle initial day month year。因为firstname,lastname和middle initial是我所拥有的Person类的一部分
return String.format("%s %s %s %s %s %s" this.firstname, this.lastname, this.middleinitial ... )
在这之后,是否有一种语法可以用来从Date类调用日,月的各个变量?我到目前为止只是尝试了“找不到符号”。我是否需要制作另一个方法,我的Date类以这种方式格式化Date,并从Person中的方法调用该方法?
答案 0 :(得分:0)
我不知道我是否理解你想要的东西,但试试这个:
在您的Person类中:
Person(Date date) {
this.date = date;
}
.
.
return String.format("%s %s %s %s" this.firstname, this.lastname, this.middleinitial, this.date.getFormatDate() )
并在你的日期类中:
Date {
.
.
public void getFormatDate() {
return this.day + "/" + this.month + "/" + this.year;
}
}
最好使用Calendar和SimpleDateFormat格式化日期,而不是使用带有这些变量的Date类,但对于当前情况,我认为这没问题。
我希望这有帮助,绝对!
答案 1 :(得分:0)
如果日期是关于Person的某些内容,例如birthDate或hireDate,则每个实例上应该有另一个成员变量,就像firstName和lastName一样。
无需创建自己的日期类。使用LocalDate
,Java 8及更高版本中内置的类表示仅限日期,没有时间和没有时区。
LocalDate ld = LocalDate.of( 2017 , Month.JANUARY , 23 );
然后使用DateTimeFormatter
类生成表示其值的String。该类甚至可以自动本地化。
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( Locale.CANADA_FRENCH );
String dateOutput = ld.format( f );
如果需要,您确实可以提取LocalDate
的每一部分。
int y = ld.getYear();
int m = ld.getMonthValue();
int d = ld.getDayOfMonth();
为了构建这么长的文本,我不会使用String.format
。使用与+
运算符或StringBuilder / StringBuffer类的串联。
StringBuilder s = new StringBuilder();
s.append( fName ).append( " " ).append( dateOutput ) ;
…
答案 2 :(得分:-1)
尝试将Date类中的变量设为public,以便为它们创建getter。
有关getter和setter的信息,请参阅https://www.tutorialspoint.com/java/java_encapsulation.htm。
答案 3 :(得分:-1)
Date date = new Date( ... );
return String.format("%s %s %s %s %s %s" this.firstname, this.lastname, this.middleinitial, date.getYear(), date.getMonth(), date.getDay() );