2015-10-31 33 views
0

我必須創建一個equals方法,如果Politicians的標題相同,則返回true。我如何比較字符串?使用java比較字符串

這是怎麼了,我試圖把它寫至今:

public class Politician implements Priority{ 
private String name, title; 
private int a; 
public Politician(String n, String t, int p){ 
    name=n; 
    title=t; 
    a=p; 
} 
public boolean equals(Politician a){ 
    if(title.equals(a.title)) 
     return true; 
    return false; 
} 

然而,它只是始終返回false。即使當我測試:

Priority t4= new Politician("Arnie", "Governor", 4); 
    Politician t5= new Politician("Bill", "Governor", 10); 
    System.out.println(t5.equals(t4)); 
    System.out.println(t4.equals(t5)); 

我寫之前equals()和我不知道爲什麼它不工作了

+2

你好嗎'a.title'如果變量是私有的?你應該讓吸氣劑來獲得價值。 'public String getTitle(){return this.title;}'然後簡單地改變'equals'方法來做'public boolean equals(a politician a){return this.title.equals(a.getTitile());}' – 3kings

+0

將字符串更改爲'public' – Arc676

+0

或者,如果您需要'private'字段,則添加getter方法 –

回答

8

公共布爾等於(政客一)沒有重載equals方法在類java.lang.Object。

聲明爲public boolean equals(Object a)來覆蓋該方法。

public boolean equals(Object a) { 
     Politician p = (Politician) a; 
     return title.equals(p.title); 
    } 

順便說一下,這是完全合法的使用p.title的政治家類中即使標題是政治家類私有。結帳這個帖子:Access private field of another object in same class

1

試試這個:

public class Politician extends Priority{ 

    public String name, title; 
    public int a; 

    public Politician(String n, String t, int p) { 
     name = n; 
     title = t; 
     a = p; 
    } 

    public boolean equals(Object o) { 
     Politician a = (Politician) o; 
     //System.out.println(a.title +" - "+title); 
     if (title.equals(a.title)) { 

      return true; 
     } 
     return false; 
    } 

    public static void main(String[] args) { 
     Priority t4 = new Politician("Arnie", "Governor", 4); 
     Politician t5 = new Politician("Bill", "Governor", 10); 
     System.out.println(t5.equals(t4)); 
     System.out.println(t4.equals(t5)); 
    } 
}