Мой метод equals в моем классе даты возвращается в мою программу тестирования датыJAVA

Программисты JAVA общаются здесь
Anonymous
Мой метод equals в моем классе даты возвращается в мою программу тестирования даты

Сообщение Anonymous »

Я знаю, что мои две даты равны, потому что я могу использовать метод аксессуара, чтобы захватить день, месяц и год, а затем распечатать его как одну дату в качестве строки. Когда я распечатаю обе даты как струны, они распечатывают как равные. Я пытался использовать несколько различных реализаций строк и дат с методом equals безрезультатно. У меня есть проблема только тогда, когда строка, с которой я сравниваю дату, - «1/1/2000». Вот мои методы. Мой метод ToString () записывает дату как строку как «01/01/2000». Однако даты, такие как «1/1/2000» и «01/01/2000», должны привести к значению истинного возврата при сравнении с помощью метода equals () .

Эта дата был написан для класса Java, в котором я могу получить понимание объектных программ и их классов. Дата конструктор- date () < /strong> < /p>

public Date() {
setDate(2000, 01, 01);
}
< /code>

date (String datestr) < /strong> < /p>

public Date(String dateStr) {
setDate(dateStr);
}
< /code>

setDate (String DatestR) < /strong> < /p>

public void setDate(String dateStr) {
int slashCount = 0;
for (int i = 0; i < dateStr.length(); i++) {
if(dateStr.charAt(i) == '/') {
slashCount++;
}
}
if (slashCount == 2) {
if (dateStr.indexOf('/') >= 0) {
int index = dateStr.indexOf('/');
String dd = dateStr.substring(index+1, dateStr.length());
if (dd.substring(1, dd.length()).lastIndexOf('/') >= 0 ) {
int index2 = dd.lastIndexOf('/');
String yy = dd.substring(index2+1, dd.length());
String mm = dateStr.substring(0, index);
dd = dd.substring(0, index2);
yy = yy.substring(0, yy.length());
//System.out.println(mm + "\n" + dd + "\n" + yy );
int y = Integer.parseInt(yy);
int d = Integer.parseInt(dd);
int m = Integer.parseInt(mm);
setYear(y);
setMonth(m);
setDay(d);
//System.out.println("get year returns " + getYear());
//System.out.println("get month returns " + getMonth());
//System.out.println("get day returns " + getDay());
}
}
} else {
throw new IllegalArgumentException();
}
}
< /code>

equals (объект другой) < /strong> < /p>

public boolean equals(Object other) {
if (other instanceof Date) {
Date that = (Date) other;
return this.day == that.day
&& this.month == that.month
&& this.year == that.year;
} else if (other instanceof String) {
Date that = new Date((String) other);
String thatString = that.toString();
String thisString = this.toString();
return thatString.equals(thisString);
}
return false;
}
< /code>

toString () < /strong> < /p>

public String toString() {
if (isShortDisplay()) {
return String.format("%02d/%02d/%04d", month, day, year);
} else {
return String.format(monthString(month) + " %d, %04d", day, year);
}
}
< /code>

test.java < /strong> < /p>

String date = "1/1/2000";
Date dstring = new Date(date);
Date d1 = new Date();
System.out.println(d1);
if (!(d1.toString().equals("1/1/2000"))) {
System.out.println("Error 1");
System.out.println();
System.out.println("This day (d1) day = " + d1.getDay());
System.out.println("This month (d1) month = " + d1.getMonth());
System.out.println("This year (d1) year = " + d1.getYear());
System.out.println("This date (d1) string = " + d1.toString());
System.out.println();
System.out.println("That (dstring) day = " + dstring.getDay());
System.out.println("That (dstring) month = " + dstring.getMonth());
System.out.println("That (dstring) year = " + dstring.getYear());
System.out.println("That date (dstring) string = " + dstring.toString());
System.out.println(d1.toString().equals(dstring.toString()));
System.out.println(d1.equals(date));
System.out.println(d1.toString().toString());

System.out.println(d1.toString());
System.out.println(dstring);

}
< /code>

datetest.java console < /strong> < /p>

01/01/2000
Error 1

This day (d1) day = 1
This month (d1) month = 1
This year (d1) year = 2000
This date (d1) string = 01/01/2000

That (dstring) day = 1
That (dstring) month = 1
That (dstring) year = 2000
That date (dstring) string = 01/01/2000
true
true
01/01/2000
01/01/2000
01/01/2000


Подробнее здесь: https://stackoverflow.com/questions/232 ... st-program

Вернуться в «JAVA»