Java 结果未显示,日期验证

Java 结果未显示,日期验证,java,class,validation,date,boolean,Java,Class,Validation,Date,Boolean,知道为什么我的代码不会显示结果吗?也许我搞砸了什么,顺便说一句,只是刚开始编程 该计划的目标是查看主类给出的日期是否有效,对于二月和闰年等细节没有那么具体,所以它非常简单 这是我的DataRec.java: public class DateRec { int month, day, year; boolean good; public DateRec (){ month = 1; day = 1; year = 200

知道为什么我的代码不会显示结果吗?也许我搞砸了什么,顺便说一句,只是刚开始编程

该计划的目标是查看主类给出的日期是否有效,对于二月和闰年等细节没有那么具体,所以它非常简单

这是我的
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);
        }
    }
}
您的validate()错误。。。。无论何时使用3参数构造函数,它都将在中设置为t false(默认值)。如果日期正确,则不能将其设置为true

改成

public void validate (){
if ((month <= 0) || (month > 12) || (year==0) || (day<=0) || (day>31)){
    good = false;
}
else
{
 good=true;
}
public void validate(){
如果((第12个月)| |(年==0)| |(第31天)){
好=假;
}
其他的
{
好=真;
}
  • boolean(good)
    的默认值为
    false
    ,因此需要在
    构造函数中初始化
    good
    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

    的值,您就不会打印
    toString()
    方法调用的结果。它应该是
    if(good==true)
    或者更简单的,
    if(good)
    为什么你希望0的一天或0的一个月是有效的?除了Rohit所说的,
    if(good=true){
    vs
    if(good=true){
    1)为了更快地获得更好的帮助,请发布一个。2)对代码块使用一致的逻辑缩进。代码缩进的目的是帮助人们理解程序流程。
     public DateRec (int setMonth, int setDay, int setYear){
        month = setMonth;
        day = setDay;
        year = setYear;
        good = true;
        validate();
     }