有一个equals()重写的问题书上给的答案是这样的,可小弟就是编译不出来,麻烦各位看一下
class Movie
{
int year;
String name;
public boolean equals (Object obj)
{
if (obj instanceof Movie)
{
{ Movie m=(Movie)obj;}

if (name.equals(m.name)&&year==m.year))
{
return  true;
}
}
 
return  false;

}
}

解决方案 »

  1.   

    1. { Movie m=(Movie)obj;}
       花括号去掉
    2. if (name.equals(m.name)&&year==m.year))
       后面多了个小括号
      

  2.   

    1:if (obj instanceof Movie)  意思:如果传来的Object 是Movie类型 (虽然Movie是你定义的一个类,但这也是一个数据类型)2: { Movie m=(Movie)obj;}  前边的花括号去掉!!
    3:if (name.equals(m.name)&&year==m.year))   是name的值如果和传来的name相同并且year和传来的year相同就 return true;你的代码改写为:
    class Movie
    {
    int year;
    String name;
    public boolean equals (Object obj)
    {
                      private Movie m;//这个要定义在if外边 ,要不下边的if就调用不到
    if (obj instanceof Movie){
                           m=(Movie)obj;
                       }

    if (name.equals(m.name)&&year==m.year)){
    return  true;
    }
    return  false;
    }
    }     
      

  3.   

    ls,
    两个if嵌套关系, 不是并列关系...
      

  4.   

    class Movie {
    int year; String name; public boolean equals(Object obj) {
    if (obj instanceof Movie) {

    Movie m = (Movie) obj; if (name.equals(m.name) && year == m.year) {
    return true;
    }
    } return false; }
    }
      

  5.   

    class  Movie 

        int  year; 
        String  name; 
        public  boolean  equals(Object  obj) 
        { 
           private   Movie   m;
           if(obj instanceof Movie) 
           { 
                Movie m=(Movie)obj;
           }        if(name.equals(m.name)&&year==m.year)
           { 
                return true; 
           } 
           return false;     } 
    }
      

  6.   

    下个教学视频把基础打好:http://www.abab123.com/bbs/down.asp?html=729332