2016-10-22 7 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

のようにそれを行うさて、あなたは、カウントを行うための正しい方法を実装しているパブリックとしてカウント変数を宣言してください、またはそれ

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に適合していないことを指摘することから始めたいと思います。それは、あなたを助けようとしている人のためにあなたのコードを読むのが難しくなります。

質問は完全にわかりませんが、クリックする度にMainHolderの数を増やすボタン付きのグラフィカルユーザーインターフェイス(GUI)を作成するように思えます。また、必要に応じてデータを保存して変更できるようにするデータモデル型のオブジェクトを構築する方法についても悩んでいると思います。

MainHolderから始めましょう。あなたのデータモデルになると思います。データモデルオブジェクトを作成する一般的な方法は、フィールド(Java Tutorial - Controlling Access to Members of a Classを参照)を定義し、他のクラス(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; 
    } 
} 

コンストラクタは内部フィールドのほとんどを初期化し、nextIdへのオブジェクトのidを設定し、1でstaticnextIdフィールドをインクリメントする方法あなたは気づくでしょう。私はあなたの質問とあなたのコードに基づいてあなたが探していたタイプの行動だと思っていました。

countフィールドへのアクセスを可能にする、getCountsetCountの単純なペアのメソッドが用意されていることにも注意してください。

これで、GUIを作成してデータモデルを使用することができます。私はあなたがGUIアプリケーションのためのベストプラクティスと一般的に考えられているようにMVC (model view controller)パターンに従うことを望んでいると仮定するつもりです。コントローラクラスにMainHolderというインスタンスを作成し、コントローラをGUIインスタンスに渡します。コントローラは、ビジネスレベルのメソッドを提供するだろう - おそらくあなたはこれに似たものだろう、コントローラ内部addMoney(int amt)

ような何か:あなたのGUIクラス内

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 
     ... 

をお呼び出しますあなたのボタンに付加listenterを持っているでしょうこのようなコントローラのaddMoney方法、:

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

私は、これはあなたが正しい方向に向かっ取得願って、幸運を!