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操作()
,它都不会重置!你的实际问题是由其他原因引起的。这并不意味着它是正确的方法。如果这是作业,你无疑会失分。对不起,我的错。删除了那个部分。这并不能解决问题,这只是转移了问题。我知道他说“构造器”时说错了。对不起,我的错。删除了那个部分。这并不能解决问题,这只是转移了问题。我想他说“构造器”时说错了。