Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新计数器值时出现问题_Java - Fatal编程技术网

Java 更新计数器值时出现问题

Java 更新计数器值时出现问题,java,Java,我在更新计数器(整数值)时遇到问题。 这是该类的定义: public class Item_Actions { private final int MAX_ITEMS = 100; private Item myItem[]; private int counter; public Item_Actions() { myItem = new Item[MAX_ITEMS]; counter++; }

我在更新计数器(整数值)时遇到问题。 这是该类的定义:

public class Item_Actions 
{
    private final int MAX_ITEMS = 100;
    private Item myItem[];
    private int counter;

    public Item_Actions()
    {
        myItem  = new Item[MAX_ITEMS];
        counter++;      
    }

    //Constructor add item into the menu (Description, type & price of Item)

    public void addItem(Item itm)
    {
        myItem[counter] = itm;
        counter++;
    }.......
现在,每次我从另一个类调用addItem构造函数时,计数器总是保持为零。 是什么原因造成的?如何将数据保存在其中


谢谢

计数器应该是
静态的
-您想限制实例化的数量,因此计数器不应该是实例变量。相反,它应该是“全局的”——即
静态的
。
您的数组也应该是静态的

您可以使用
ArrayList
,而不是使用计数器和数组


总之,避免使用
静态
字段-而是在其他代码中查找问题。

计数器应为
静态
-您希望限制实例化的数量,因此计数器不应是实例变量。相反,它应该是“全局的”——即
静态的
。
您的数组也应该是静态的

您可以使用
ArrayList
,而不是使用计数器和数组


总之,避免使用
static
字段-而是在其他代码中查找问题。

只需在声明变量
计数器之前插入
static
关键字即可。就是

 private static int counter=0;

只需在声明变量
计数器之前插入
static
关键字。就是

 private static int counter=0;

有什么理由不使用
java.util.List
来存储项目吗?
addItem
不是构造函数。这是一种方法。顺便说一下,上述问题在发布的代码和信息中是不可见的。它看起来不错(尽管(real!)构造函数中的
计数器+++
是不必要的)。它在别的地方。更准确一点。如果可以,请提供一个答案。谢谢你的更正,你是对的。彼得-没有特别的原因,它没有被重新要求。@Edan:被接受的答案真的解决了你的问题吗?如果创建类的另一个实例,则将其设置为静态将导致不必要的(据我所知)行为…如果将
计数器设置为静态,则每次执行
新建项\u操作()
,它都不会重置!你的实际问题是由其他原因引起的。这并不意味着它是正确的方法。如果这是家庭作业,你无疑会失分。你有什么理由不使用
java.util.List
来存储你的项目吗?
addItem
不是构造函数。这是一种方法。顺便说一下,上述问题在发布的代码和信息中是不可见的。它看起来不错(尽管(real!)构造函数中的
计数器+++
是不必要的)。它在别的地方。更准确一点。如果可以,请提供一个答案。谢谢你的更正,你是对的。彼得-没有特别的原因,它没有被重新要求。@Edan:被接受的答案真的解决了你的问题吗?如果创建类的另一个实例,则将其设置为静态将导致不必要的(据我所知)行为…如果将
计数器设置为静态,则每次执行
新建项\u操作()
,它都不会重置!你的实际问题是由其他原因引起的。这并不意味着它是正确的方法。如果这是作业,你无疑会失分。对不起,我的错。删除了那个部分。这并不能解决问题,这只是转移了问题。我知道他说“构造器”时说错了。对不起,我的错。删除了那个部分。这并不能解决问题,这只是转移了问题。我想他说“构造器”时说错了。