Java对象初始化

时间:2016-10-22 10:57:27

标签: java

无法理解如何获取我的对象值。例如,在此代码行中。我有对象例如" Money",然后点击按钮我想增加Money计数。

 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);



    }
}

我想增加值,例如count。

在我之前的代码中,我这样做是为了CarMain.main[0] += 1;

现在有了这个代码,我无法做到。

并且不能像CarMain.Money.count +=1;

那样做

3 个答案:

答案 0 :(得分:0)

嗯,你已经实现了正确的计数方法。

基本上,每次调用实例Money.count(1)时,都可以在count方法中使用以下实现:

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

如果您希望count变量始终加1,那么您不需要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;
    }
}

您将注意到构造函数如何初始化大多数内部字段,并将对象的id设置为nextId,然后将static nextId字段增加1 。我认为这是您根据自己的问题和代码寻找的行为类型。

另请注意,提供了一对简单的方法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类中你会有一个附加到你的按钮的监听器,它会调用控制器的addMoney方法,如下所示:

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

我希望这能让你朝着正确的方向前进,祝你好运!

答案 2 :(得分:-2)

尝试将count变量声明为public,或为其构建方法