2016-11-22 55 views
-4

傢伙,我有以下另一個領域: 第1類:傢伙我怎麼設置字段等於在另一個類

public class SellProduct 
{ 
    private int productCost; 
    public SellProduct(int productCost) 
    { 
    this.productCost = productCost; 
    } 

    public int getProductCost() 
    { 
     return productCost; 
    } 
} 

本課程將設置多少產品成本。 2類:

public class SalesOfTheYear 
{ 
    private int totalIncome; 
    SellProduct sellProduct; 

    public SalesOfTheYear() 
    { 
    totalIncome = 0; 
    } 

    public void cashOut() 
    { 
     totalIncome = sellProduct.getProductCost() + totalIncome; 
    } 

    public int getSalesOfTheYear() 
    { 
     return totalIncome; 
    } 
} 

現在我想的是,二班拿產品花了多少錢,然後將其設置爲totalIncome領域。當然,要保持它的價值,而不是用新的總收入價值來代替它。 但是,每次運行cashout時,都會發送java.lang.NullPointerException。這是否意味着我必須創建類sellPoduct的對象? 如果我將不得不提供一個參數,這意味着無論我提供一個參數,它會一直是productCost嗎?

+1

創建一個帳戶來問同樣的問題是不夠的? ([設置一個字段等於另一個類的另一個字段](// stackoverflow.com/q/40751330)) – Tom

回答

0

是的,將產品成本轉至cashOut()方法並將其添加到totalIncome而非存儲SellProduct本身的參考是有意義的。它看起來是這樣的:

public void cashOut(int cost){ 
    totalIncome += cost; 
} 

而且,我們不需要默認的構造函數中SalesOfTheYear類爲int字面值(在這種情況下,0),分配的默認值對象被創建時。

0

是在Java中,只要你有一個像SellProduct自己的類你將與初始化它:用xxx是你的情況的整數

SellProduct sellProduct = new SellProduct(xxx); 

如果你給它多少20然後每次運行cashOut時,您的總收入將增加20()

+0

你有這個嗎? SellProduct = Product SellProduct(totalIncome); –

+0

是的,但它將被複制不引用。 int是基本類型... – HappyProgrammerUser

+0

如果您希望總收入和產品成本相同**對象**,那麼您必須使用「整數」而不是「整數」 – HappyProgrammerUser

0

要更新SalesOfTheYear實例中的totalIncome字段,您需要將所有必需的SellProduct實例傳送到SalesOfTheYear。 要麼你擁有所有的實例,而只是一次提供它們,要麼你可以提供實例。

public class SalesOfTheYear 
    { 
    private int totalIncome; 
    SellProduct sellProduct; 
    public SalesOfTheYear() 
    { 
    totalIncome = 0; 
    } 

    public void cashOut(SellProduct sellProduct) 
    { 
     totalIncome = sellProduct.getProductCost() + totalIncome; 
    } 

    public void cashOut(List<SellProduct> sellProducts) 
    { 
     for (SellProduct product : sellProducts){ 
      cashOut(product); 
     } 
    } 

    public int getSalesOfTheYear() 
    { 
     return totalIncome; 
    } 
    } 

如何使用:

SalesOfTheYear salesOfTheYear = new SalesOfTheYear(); 
salesOfTheYear.cashOut(new SellProduct(500)); 
salesOfTheYear.cashOut(new SellProduct(100)); 
int totalSale = salesOfTheYear.getSalesOfTheYear(); 
相關問題