知道我的代码为什么不显示结果?也许我搞砸了一些东西,顺便说一下。
该计划的目标是查看主类提供的日期是否有效,它与2月份和闰年等详细信息的具体情况不同,所以非常简单。
这是我的DataRec.java
:
public class DateRec {
int month, day, year;
boolean good;
public DateRec (){
month = 1;
day = 1;
year = 2008;
good = true;
}
public DateRec (int setMonth, int setDay, int setYear){
month = setMonth;
day = setDay;
year = setYear;
}
public void validate (){
if ((month < 0) || (month > 12)){
good = false;
if (year == 0)
good = false;
if ((day < 0) || (day > 31))
good = false;
}
}
@Override
public String toString() {
if (good = true) {
return String.format("%dd/%dd/%dddd", month, day, year);
} else {
return String.format("%dd/%dd/%dddd", month, day, year);
}
}
}
这是我的主要课程DataRecTest.java
:
public class DateRecTest {
public static void main (String[] args){
DateRec today = new DateRec(1,2,2014);
DateRec anyDay = new DateRec();
DateRec noDay = new DateRec(13,31,2014);
anyDay.validate();
today.validate();
noDay.validate();
today.toString();
anyDay.toString();
noDay.toString();
}
}
答案 0 :(得分:1)
boolean (good)
的默认值为false
,因此您需要在good
或constructor
函数中初始化validate()
,即
good = true; // in constructor or validate function
要查看打印所需的结果。
//To print in java use System.out.print() or println();
System.out.println(today.toString());
//or simply
System.out.println(today); // println will call today.toString() internally
的 [编辑] 强>
由于您将结果存储在good
中,我建议如下:
public DateRec (int setMonth, int setDay, int setYear){
month = setMonth;
day = setDay;
year = setYear;
good = true;
validate();
}
现在您不需要每次都致电validate()
;只需检查good
答案 1 :(得分:0)
你的validate()是错误的....每当你使用3参数构造函数时,它总是被设置为t false(默认值)。当日期正确时,您不会将其设置为true。
将其更改为,
public void validate (){
if ((month <= 0) || (month > 12) || (year==0) || (day<=0) || (day>31)){
good = false;
}
else
{
good=true;
}