class Date {
  int year, month, day;
  
  Date(int y, int m, int d) { 
    year = y; month = m; day = d;
  }
  
  public int compare(Date date) {
    return year > date.year ? 1
           : year < date.year ? -1
           : month > date.month ? 1
           : month < date.month ? -1
           : day > date.day ? 1
           : day < date.day ? -1 : 0;
  }
  
  public String toString() {
   return "Year:Month:Day -- " + year + "-" + month + "-" + day;
  }
}
}
其中compare方法我想用另一种方法写 ,怎么写/

解决方案 »

  1.   

    compare这个方法你想拿来干什么?感觉你里面做的三元判断没什么意义。最后返回的是一个0,用if语句判断就行了撒。
    if(year!=date.year&&month!=date.month&&day!=date.day){
    return 0;
    }
    else 
    return 1;
      

  2.   

    return (year - date.year)*10000 + (month - date.month)*100 + (day - date.day) 
      

  3.   

    如果你要用Date,用java.util.Date,比较可以用.getTime来比long大小即可。
    如果你自己写,compare没什么特别优化的方法,除非你都转化成天比较,但效率没有质的变化
    year*365+30*month+day
      

  4.   

    因為只是同時比 year month day三個數字的大小,
    所以可以不用考慮潤年或月份長短,視為日期31進位,月份12進位,
    然後用此基準算出相對的虛擬日數,就可以比大小。
    (如果月份可以設定超過12,或日期可以超過31,則必須先轉換成真實日期)public int compare(Date date) {
      int a = this.year*12*31+this.month*31+this.day;
      int b = date.year*12*31+date.month*31+date.day;
      return a>b?1:a=b?0:-1;
    }
      

  5.   

    year*365+30*month+day 這樣不行,因為2/1和1/31會算成同一天,要用31才行。
    然後用31之後前面就不能用365必須用372。
      

  6.   

    public static int compare_date(String DATE1, String DATE2) {
            
            
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
            try {
                Date dt1 = df.parse(DATE1);
                Date dt2 = df.parse(DATE2);
                if (dt1.getTime() > dt2.getTime()) {
                    System.out.println("dt1 在dt2前");
                    return 1;
                } else if (dt1.getTime() < dt2.getTime()) {
                    System.out.println("dt1在dt2后");
                    return -1;
                } else {
                    return 0;
                }
            } catch (Exception exception) {
                exception.printStackTrace();
            }
            return 0;
        }
    }
      

  7.   

    我是为了比较年月日的大小。其中是先比较年,一样的话才是月,最后才是日。
    2楼的看不懂,6楼的貌似Date是类,你怎么把它当成String了?也看不懂。有能说下的吗?
      

  8.   

    比较时间可以直接用 java.util.Date中的before和after这两个方法来比较  他们都是返回Boolean值