2016-10-22 263 views
0

無法理解如何獲取我的對象值。例如在這個代碼行中。我有對象,例如「錢」,並在按鈕單擊我想增加錢數。Java對象初始化

package com.crelix.crelix; 

public class MainHolder { 

    int id; 
    String name; 
    int count; 

    public void id(int id) { 

    } 

    public MainHolder(String name) { 


    } 


    public void count(int count) { 

    } 


    public static void main(String args[]) { 

     MainHolder Money = new MainHolder("Money: "); 
     MainHolder MoneyClicks = new MainHolder("Money Clicks: "); 
     MainHolder Boxes = new MainHolder("Boxes: "); 
     MainHolder BoxClicks = new MainHolder("Boxes Clicks: "); 
     MainHolder BoxLevel = new MainHolder("Box Level: "); 
     MainHolder PlayerLevel = new MainHolder("Player Level: "); 
     MainHolder GarageLevel = new MainHolder("Garage Level: "); 
     MainHolder GarageSlots = new MainHolder("Garage Slots: "); 

     Money.id(1); 
     Money.count(0); 

     MoneyClicks.id(2); 
     MoneyClicks.count(0); 

     Boxes.id(3); 
     Boxes.count(0); 

     BoxClicks.id(4); 
     BoxClicks.count(0); 

     BoxLevel.id(5); 
     BoxLevel.count(1); 

     PlayerLevel.id(6); 
     PlayerLevel.count(1); 

     GarageLevel.id(7); 
     GarageLevel.count(1); 

     GarageSlots.id(8); 
     GarageSlots.count(25); 



    } 
} 

而我想增加例如計數值。

在我以前的代碼,我喜歡CarMain.main[0] += 1;

本守則我不能做它做它現在。

並且不能做到像CarMain.Money.count +=1;

回答

-2

嘗試聲明計數變量爲public,或建立一個方法,它

0

嗯,你已經實現做計數的正確方法。

基本上,每次調用例如Money.count(1)時間,您可以在計數方法實現如下:

// This function will increment the count by the entered count variable. 
public void function count(int count){ 
    this.count += count; 
} 

如果你想計數變量總是通過1遞增,那麼你不需要的計數參數。你可以調用沒有任何參數的方法,然後在方法內加1。

0

我想先指出你的變量名稱不符合Java Naming Conventions,這使得你的代碼更難以閱讀,因爲我們這些正試圖幫助你的人。

接下來,這個問題對我來說並不完全清楚,但它聽起來像您想要創建一個帶有按鈕的圖形用戶界面(GUI),每次點擊該按鈕都會增加一個MainHolder的計數。我也認爲你一直在堅持如何構建一個數據模型類型的對象,這將允許你根據需要存儲和修改數據。

讓我們從MainHolder開始,我假設它將成爲您的數據模型。創建數據模型對象的常用方法是定義您希望它具有的private(請參見Java Tutorial - Controlling Access to Members of a Class)字段,併爲每個字段提供getter和/或setter方法,這些方法將爲其他類(例如GUI)公開提供。

public class MainHolder { 

    private static int nextId = 1; 
    private int id; 
    private String name; 
    private int count; 

    public MainHolder(String name) { 
     count = 0; 
     this.name = name; 
     id = nextId; 
     nextId++; 
    } 

    public void setCount(int count) { 
     this.count = count; 
    } 

    public int getCount(){ 
     return count; 
    } 
} 

你會發現構造函數初始化如何最內部的領域,並把對象的nextIdid然後逐一遞增staticnextId領域。我認爲這是你根據你的問題和你的代碼尋找的行爲類型。

還要注意,提供了一對簡單的方法getCountsetCount,允許訪問count字段。

現在您可以創建GUI並使用您的數據模型。我將假設你會想要遵循MVC (model view controller)模式,因爲這通常被認爲是GUI應用程序的最佳實踐。所以你可能會在控制器類中創建一個MainHolder的實例,然後將你的控制器傳遞給你的GUI實例。該控制器將提供企業級的方法 - 也許像addMoney(int amt)

你會與此類似控制器內部:

public class Controller{ 
    private MainHolder money; 
    ... 

    public Controller(){ 
     money = new MainHolder("Money: "); 
    } 
    ... 

    public addMoney(int amt){ 
     int amount = money.getCount() + amt; 
     money.setCount(amount); 
    } 
    ... 

    public static void main(String args[]) { 
     Controller controller = new Controller(); 
     MyGui myGui = new MyGui(controller); 
     //Invoke appropriate method(s) to show the GUI 
     ... 

內,您的GUI類,你將有一個listenter連接到您的按鈕將調用控制器的addMoney方法,像這樣:

addMoneyButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      controller.addMoney(1); 
     } 
    }); 

我希望這可以讓你在正確的方向前進,祝你好運!