2017-04-21 65 views
0

我在我的java項目中有兩個對象,我想從每個對象中取一個字段(例如,假設我們有兩個酒店房間,在其他字段中他們也有一個字段「價格」)並將em放在方法中並返回一個變量(在前面的例子中,我們假設這兩個房間的差異)。我的主要問題是在創建方法之後,你如何在主類中調用它? 我做了一個嘗試(下面的代碼),但我知道這是不正確的。所以如果你能給我一個關於如何做到或接近它的建議將是非常有用的。如何獲得java中的兩個對象字段之間的區別

difference = priceDifference(roomA.price, roomB.price); 

全碼 主類

package project1; 
    import java.util.Scanner; 

public class TestRoom { 

public static void main(String[] args) { 
    String roomNumber, category, view; 
    int numberOfBeds; 
    double price; 
    double difference; 
    Room roomA = new Room("C101",2,"Standard","Sea",95.89); 



    Scanner sc = new Scanner(System.in); 
    System.out.println("Give room number \n"); 
    roomNumber=sc.next(); 
    System.out.println("Give number of beds \n"); 
    numberOfBeds=sc.nextInt(); 
    System.out.println("Give category \n"); 
    category=sc.next(); 
    System.out.println("Give view \n"); 
    view=sc.next(); 
    System.out.println("Give price \n"); 
    price=sc.nextDouble(); 

    Room roomB = new Room(roomNumber, numberOfBeds, category, view, price); 
    System.out.println(roomA.toString()); 
    System.out.println(roomB.toString()); 

    difference = priceDifference(roomA.getprice(), roomB.getprice()); 


} 

} 

教室

package project1; 

public class Room { 

public String roomNumber; 
public int numberOfBeds; 
private String category; 
private String view; 
private double price; 




    public Room(String roomNumber, int numberOfBeds, String category, String view, double price){ 
    this.roomNumber = roomNumber; 
    this.numberOfBeds = numberOfBeds; 
    this.category = category; 
    this.view = view; 
    this.price = price; 
} 








public void setroomNumber(String roomnumber){ 
    this.roomNumber = roomnumber; 
} 
public String getroomNumber(){ 
    return this.roomNumber; 
} 

public void setnumberOfBeds(int numberofbeds){ 
    this.numberOfBeds = numberofbeds; 
} 
public int getnumberOfBeds(){ 
    return this.numberOfBeds; 
} 

public void setcategory(String category){ 
    this.category = category; 
} 
public String getcategory(){ 
    return this.category; 
} 

public void setview(String view){ 
    this.view = view; 
} 
public String getview(){ 
    return this.view; 
} 

public void setprice(double price){ 
    this.price = price; 
} 
public double getprice(){ 
    return this.price; 
} 


public double priceDifference(double double1 ,double double2){ 

    double difference = 0; 
    difference = double1 - double2; 
    return difference; 
} 

@Override 
public String toString() { 
    return "Room number:" + this.roomNumber + ",\n " 
      + "Number of beds:" + this.numberOfBeds + ",\n " + "Category:" 
      + this.category + ",\n " + "View:" + this.view + ",\n " + "Price:" + this.price; 
} 

}

回答

0

這是很好的做法,封裝你的領域。將它們保留爲「Room」類中的私有,並使用getter和setter方法,而不是直接訪問值。

difference = priceDifference(roomA.getPrice(), roomB.getPrice); 

這就是我可以給的所有建議,沒有更多的上下文。這段代碼沒有錯。如果您嘗試調試錯誤,則需要更多信息。

隨着代碼的立場,您應該更新方法調用以引用房間類的實例。你可以改變

difference = priceDifference(roomA.getprice(), roomB.getprice()); 

difference = roomB.priceDifference(roomA.getprice(), roomB.getprice()); 
+0

以及這是priceDifference方法(這是在類「房間」,有setter和getter的構造函數房間),但我得到的錯誤「此方法是未定義的類型TestRoom(主) public double getpriceDifference(雙double1,雙double2){ \t \t \t 雙\t差= 0; \t差= double1 - double2; \t \t回差; \t} –

+0

@sotosbic,您在拼寫方法相同的方式,當你在你def時調用它它呢?在你的代碼中,你寫了「getpriceDifference(...」在你的問題中你寫的只是「priceDifference(...」 – RaceYouAnytime

+0

以及它說的使用PUBLIC方法double getpriceDifference(double1,double2)之間的價格。我認爲這個價格差是方法的名稱,並得到就像這個方法的getter(我是初學者在Java中,所以我不舒服,但與Java) –

1

正確的Java方法是一個簡單的功能添加到您的Room

public double priceDifference(Room roomB) { 
    return this.price - roomB.getPrice(); //or roomB.price if you do not use getters 
} 

然後,您可以使用調用它的主應用程序:

double difference = roomA.priceDifference(roomB); 

更新:根據他的意見解決方案有機磷農藥的問題:

我把它你的方法是這樣的:

public double priceDifference(double roomAprice, double roomB.price) { // code here } 

如果是這樣的話,把它從你Room類的,而不是投入到您的public static void main()位於同一類或者,你可以不使用它的移動訪問:

difference = roomA.priceDifference(roomA.price, roomB.price); 

請注意,FIR這個建議可能仍然是最好的選擇,因爲在這個更新中的建議將被視爲語法正確,但設計不好。根據OP的評論,我只是爲了完成而添加了其他兩個。

+0

嗯,這是我的大學的一個項目,在它的說明中說,我們需要制定一個價格差異方法,同時需要2個價格。感謝您的建議,雖然 –

+0

比我的回答更好,這是實際做到這一點的方法。 – RaceYouAnytime

+0

感謝您的回覆,但是在說明中說方法需要在Room類中... –

相關問題