import java.util.Scanner;class Person {
 String name;
 Person(String name){
 this.name = name;
}
 public boolean equals(Object obj) {
   if(obj == null) return false;
   else{
    if(obj instanceof Person){
      Person p1 = (Person)obj;
       if(this.name == p1.name){
        return true;}
     }
   }
  return false;   }
 }
public class Love {
 public static void main(String []args) {
   Scanner s = new Scanner(System.in);
   System.out.print("请输入你最爱的人:");
   String name = s.next();
   Person p = new Person("323");
   Person p1 = new Person(name);
   System.out.println();
   System.out.print(p.equals(p1));
  }
}
为什么我P1得参数name传不进去????        高手来解答!!!!!!!    急= =

解决方案 »

  1.   

    你的P1的参数name传进去了 只是你的equals方法写的不对。
    class Person {
    String name; Person(String name) {
    this.name = name;
    } public boolean equals(Object obj) {
    if (obj == null)
    return false;
    else {
    if (obj instanceof Person) {
    Person p1 = (Person) obj;
    if (this.name.equals(p1.name)) {
    return true;
    }
    }
    }
    return false;
    }
    }
      

  2.   

    this.name == p1.name
    这一行,如果我没理解错你的意思的话
    改成this.name.equals( p1.name)
    字符串不能这样==
      

  3.   

    this.name == p1.name其效果是判断两个字符串的地址是否一样,this.name.equals( p1.name)才是判断他们的值是否一样
      

  4.   

    this.name == p1.name改成this.name.equals(p1.name)
      

  5.   

    这是 == 以及 equals 用法的区别
      

  6.   

    谢谢,我理解了。
    因为刚刚学到equals方法。
    有很多细节忘了得。对得,String类里把equals方法又重写过,忘了,谢谢大家。!
      

  7.   

    “if(this.name == p1.name)”这句代码不对,应该用"equals"代替“==”
    犯了常识性错误