class Man{ private int id; private sDate jt; Man(int ia, int ya,int ma,int da){ /*构造方法的参数包括了sDate类的3个属性*/ id=ia; jt=new sDate(ya,ma,da); } void disp(){ System.out.println("编号:"+id); System.out.print("工作日期: "); jt.outdate(); } } class sDate{ private int year; private int month; private int day; sDate(int y,int m,int d){ year=y; if(m>0&&m<13) month=m; /*在构造方法中确定月份的值,如果月份的值不满足条件表达式,则设月份的默认值为1*/ else month=1; day=vDay(d); } private int vDay(int v){ int[] dM={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(v>0&&v<=dM[month]) return v; else return 1; } void outdate(){ System.out.println(year+","+month+","+day); } } class text{ public static void main(String args[]){ Man m=new Man(123,1997,3,21); m.disp(); } }哪里错误
时间: 2024-01-16 09:03:17 浏览: 82
代码中存在语法错误,需要进行修正:
1. 在 sDate 类中,方法 `outdate()` 的拼写不正确,应该是 `outDate()`。
2. 在 sDate 类中,构造方法中对月份的判断条件表达式有误,应该是 `if(m>0 && m<13)`。
3. 在 sDate 类中,方法 `vDay()` 中月份的天数数组 `dM` 应该从下标 1 开始赋值,即 `int[] dM={31,28,31,30,31,30,31,31,30,31,30,31}`。
修改后的代码如下所示:
```java
class Man{
private int id;
private sDate jt;
Man(int ia, int ya, int ma, int da){
id = ia;
jt = new sDate(ya, ma, da);
}
void disp(){
System.out.println("编号:" + id);
System.out.print("工作日期: ");
jt.outDate();
}
}
class sDate{
private int year;
private int month;
private int day;
sDate(int y, int m, int d){
year = y;
if(m > 0 && m < 13)
month = m; // 在构造方法中确定月份的值,如果月份的值不满足条件表达式,则设月份的默认值为1
else
month = 1;
day = vDay(d);
}
private int vDay(int v){
int[] dM = {31,28,31,30,31,30,31,31,30,31,30,31}; // 月份天数数组从下标 1 开始赋值
if(v > 0 && v <= dM[month - 1])
return v;
else
return 1;
}
void outDate(){
System.out.println(year + "," + month + "," + day);
}
}
class Test{
public static void main(String args[]){
Man m = new Man(123, 1997, 3, 21);
m.disp();
}
}
```
阅读全文