繁体   English   中英

Java对象初始化

[英]Java Object initialization

无法理解如何获取我的对象值。 例如在此代码行中。 我有对象,例如“ 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);



    }
}

我想增加例如计数值。

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

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

不能像CarMain.Money.count +=1;那样做CarMain.Money.count +=1;

好了,您已经实现了进行计数的正确方法。

基本上,每次调用实例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。

首先,我想指出您的变量名不符合Java Naming Conventions(Java命名约定) ,这对于那些试图帮助您的人来说,使您的代码更难阅读。

接下来,这个问题对我来说并不完全清楚,但是听起来您想创建一个带有按钮的图形用户界面(GUI),该按钮每次单击时都会增加MainHolder的计数。 我还认为您在如何构建对象的数据模型类型方面会遇到困难,该模型将允许您根据需要存储和修改数据。

让我们从MainHolder开始,我假设它将成为您的数据模型。 创建数据模型对象的一种常见方法是定义您希望其拥有的private (请参阅Java教程-控制对类成员的访问 )字段,并为每个字段提供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(模型视图控制器)模式,因为这通常被认为是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器将调用控制器的addMoney方法,如下所示:

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

希望这能使您朝正确的方向前进,祝您好运!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM