else{ day = 1; if(month < 12) month = month + 1; else{ month = 1; year = year + 1; } } } } 下面是我改的面目狰狞版本,不知为何报错还不给错误信息,放出来有助于你们理解题意,主要还是帮我解答问题 class test { public static void main(String[] args) { Date d1= new Date(11,02,2013); System.out.print(d1); }
}class Date { private int day,month,year;
public Date(int d, int m, int y) {//assume valid date day = d; month = m; year = y; }
public int day(){ return day; }
public int month(){ return month; }
public int year(){ return year; }
public String toString(){return day + "/" + month +"/"+ year;}
public void successorDate() { int d=day; int m=month; int y=year; int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(year % 4 == 0 && (year % 100 !=0 || year % 400 == 0)) daysInMonth[1] = 29; if(day < daysInMonth[month]) d = day + 1; else { d = 1; if(month < 12) month = month + 1; else { month = 1; year = year + 1; } } return new Date(d,m,y); } } 第2个问题是:列出的一个不可变类car,而每一个汽车都有一个登记号码(REG),品牌,里程数和价格。两辆车如果具有相同的登记号码(REG)那它们就是同一辆车。写出下列为您的汽车类:用equals,compareTo,toString,hashCode的方法写一个简单的测试: final class Car{ private final String reg; private final String make; private final int mileage; private final double value;
Car(String r, String m, int mi, int v){ reg = r; make = m; mileage = mi; value = v; } public String reg(){ return reg; } public String make(){ return make; } public String mileage(){ return mileage; } public String value(){ return value; } }
没有权限修改自己的帖子..., 好吧我把返回值另起一行,话说国外这种写法的不少啊?问题1是把下面可变的Date类。重新编写,使之成为(immutable)不可改变的,然后写一个小程序测试:
class Date{
private int day,month,year;
public Date(int d, int m, int y){//assume valid date
day = d; month = m; year = y;
}
public int day(){
return day;
}
public int month(){
return month;
}
public int year(){
return year;
}
public String toString(){
return day + "/" + month +"/"+ year;
}
public void successorDate(){
int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(year % 4 == 0 && (year % 100 !=0 || year % 400 == 0))
daysInMonth[1] = 29;
if(day < daysInMonth[month])
day = day + 1;
else{
day = 1;
if(month < 12) month = month + 1;
else{
month = 1; year = year + 1;
}
}
}
}
下面是我改的面目狰狞版本,不知为何报错还不给错误信息,放出来有助于你们理解题意,主要还是帮我解答问题
class test
{
public static void main(String[] args)
{
Date d1= new Date(11,02,2013);
System.out.print(d1);
}
}class Date
{
private int day,month,year;
public Date(int d, int m, int y)
{//assume valid date
day = d; month = m; year = y;
}
public int day(){
return day;
}
public int month(){
return month;
}
public int year(){
return year;
}
public String toString(){return day + "/" + month +"/"+ year;}
public void successorDate()
{
int d=day;
int m=month;
int y=year;
int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(year % 4 == 0 && (year % 100 !=0 || year % 400 == 0))
daysInMonth[1] = 29;
if(day < daysInMonth[month])
d = day + 1;
else
{
d = 1;
if(month < 12)
month = month + 1;
else
{
month = 1; year = year + 1;
}
}
return new Date(d,m,y);
}
}
第2个问题是:列出的一个不可变类car,而每一个汽车都有一个登记号码(REG),品牌,里程数和价格。两辆车如果具有相同的登记号码(REG)那它们就是同一辆车。写出下列为您的汽车类:用equals,compareTo,toString,hashCode的方法写一个简单的测试:
final class Car{
private final String reg;
private final String make;
private final int mileage;
private final double value;
Car(String r, String m, int mi, int v){
reg = r; make = m;
mileage = mi; value = v;
}
public String reg(){
return reg;
}
public String make(){
return make;
}
public String mileage(){
return mileage;
}
public String value(){
return value;
}
}
貌似main函数要写在public class里吧,也就是和文件名同名的public class里才能运行
那不是问题吧,问题是可变不可变类,而且我是在JCreator里,不用加public
...
return new Date(d,m,y);
}
所谓immutable,大概就是LZ理解的,方法不会修改对象,所有修改方法其实返回的一个新对象。
但是明显LZ的基本语法就是错的,void方法返回值,结果返回new Date。