2017-04-13 33 views
-5
public class TVSet { 
private String brand; 
private double price; 
public TVSet() 
{ 
    brand = ""; 
    price = 0.0; 
} 
public String getbrand() 
{ 
    return this.brand; 
} 
public double getprice() 
{ 
    return this.price; 
} 
public void setbrand(String brand) 
{ 
    if(brand!=null) 
    { 
     this.brand = brand; 
    } 
    else 
    { 
     System.out.println("INVAILD VALUE"); 
    } 
} 
public void setprice(double price) 
{ 
    if(price>=0) 
    { 
     this.price = price; 
    } 
    else 
    { 
     System.out.println("INVALID VALUE"); 
    } 
} 
public void TVSet(String brand, double price) 
{ 
    if(brand!=null) 
    { 
     this.brand= brand; 
    } 
    else 
    { 
     System.out.println("INVALID VALUE"); 
    } 
    if(price>=0.0) 
    { 
     this.price = price; 
    } 
    else 
    { 
     System.out.println("INVALID VALUE"); 
    } 
} 
    @Override 
    public String toString() 
    { 
     //double temp = this.getprice(); 
     //DecimalFormat f = new DecimalFormat("##,00"); 
     //String price2 = f.format(temp); 
     return String.format("%s, %.2f", brand, price); 
    } 
    @Override 
    public boolean equals(Object o) 
    { 
     if(o instanceof TVSet) 
     { 
     TVSet t =(TVSet)o; 
     if(price == t.price && brand == t.brand) 
     return true; 
     } 
     return false; 
    } 
} 

這是我的學校功課,叫我們寫一個類封裝電視機的概念,假設一臺電視機具有以下屬性:品牌(無效字符串,默認爲空)和價格(非負十進制數字,默認爲0)。請遵循命名約定來開發此類,包括 - 默認構造函數 - 構造函數,它將品牌和價格作爲參數 - 訪問器方法和增變器方法 - toString方法,返回由(1)品牌(2)逗號和(3)價格(四捨五入到小數點後第二位) - 等號方法 - 每當提供無效值時,都會打印一條錯誤消息「INVALID VALUE」到標準輸出流。 equals(Object o)的用法是什麼?的Java有什麼用等號(對象O)功能

+0

默認的構造函數只在類沒有提供時才存在。如果它提供了任何構造函數,即使是沒有參數的構造函數,它也不是默認的構造函數。您沒有遵循方法「TVSet」的命名約定,也沒有遵循任何未覆蓋的方法。 –

+0

顧名思義,如果兩個對象被認爲是相等的,它會返回「true」。 –

+0

檢查一下。 https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html – CodingNinja

回答

2

在Java中,==運算符在對象上使用時,將僅檢查兩個對象是否通過引用相同。在您的情況下,具有相同品牌和價格的兩個不同的電視對象將不會相同==

equals方法的要點是讓您查看兩個不同的對象是否相同。在你的情況下,如果兩臺電視是相同的品牌和相同的價格,這將導致true的結果。正是這一點,而不是==,在許多圖書館中用於檢查是否相等。

0

.equals()方法實現了非空對象引用(下面的示例)上的等價關係。文章見this

String h = "hello"; 
Scanner input = new Scanner(System.in); 
String x = input.next(); 
if (h.equals(x)) { //do NOT use ==; this is not used for comparing strings 
System.out.println("h equals x"); 
+0

這個例子與你的代碼無關。這是一個隨機的簡單例子,幫助你理解'.equals()'與'=='的用法 – CodingNinja