我正在学习面向对象的程序设计,并开始学习有关继承的知识。我的老师给我的任务是制作一个带有6个“按钮”的计数器对象:递增,递减,重置,AddMemory,ResetMemory和退出。每个按钮的作用都非常简单。
要求是我必须使用JOptionPane命令,我必须创建一个具有counter属性的Counter类,递增,递减,重置和退出方法,我必须创建一个具有Memory属性的MemoryCounter类restMemory ,以及addMemory方法。我还必须制作一个MemoryCounterConsoleMenu类,该类通过JOptionPane命令创建输入框并执行适当的方法。我要做的最后一件事是创建一个MemoryCounterTest类,该类将MemoryCounterConsoleMenu和MemoryCounter类放在一起
所以我做了所有这些,就在这里:
第一个是Counter类
public class Counter
{
private int counter = 0;
public void increment()
{
setCounter(getCounter() + 1);
}
public void decrement()
{
setCounter(getCounter() - 1);
}
public void reset()
{
setCounter(0);
}
public void setCounter(int counter) {
this.counter = counter;
}
public int getCounter() {
return counter;
}
}
这是MemoryCounter类
public class MemoryCounter extends Counter
{
private int memory = 0;
public void resetMem()
{
setMemory(0);
}
public void addMem()
{
setMemory(getCounter());
}
public void setMemory(int memory)
{
this.memory = memory;
}
public int getMemory()
{
return memory;
}
}
接下来是MemoryConsoleMenu
public class MemoryCounterConsoleMenu
{
static MemoryCounter memCounter = new MemoryCounter();
static Counter counter = new Counter();
public static int console()
{
System.out.println(memCounter.getMemory());
Object[] options = {"Reset Mem", "Add Mem", "Increment", "Decrement", "Reset", "Quit" };
int objectIndex = JOptionPane.showOptionDialog(null, "Counter = " + counter.getCounter() + "Memory = "
+ memCounter.getMemory(), "MemoryCounter",JOptionPane.PLAIN_MESSAGE,
JOptionPane.PLAIN_MESSAGE, null, options, options[5]);
return objectIndex;
}
public static int change(int objectIndex)
{
if(objectIndex == 0)
{
memCounter.resetMem();
return 1;
}
else if(objectIndex == 1)
{
memCounter.addMem();
return 2;
}
else if(objectIndex == 2)
{
counter.increment();
return 3;
}
else if(objectIndex == 3)
{
counter.decrement();
return 4;
}
else if(objectIndex == 4)
{
counter.reset();
return 5;
}
else
{
return 6;
}
}
}
最后,有一个MemoryCounterTest
public class MemoryCounterTest
{
public static void main(String[] args)
{
MemoryCounterConsoleMenu memoryConsole = new MemoryCounterConsoleMenu();
for(int i = 0; i != 6;)
{
i = memoryConsole.change(memoryConsole.console());
}
}
}
除内存值外,其他所有内容均正常运行。它保持恒定的零。我自己进行了一些故障排除,发现代码中唯一的问题是“ addMem()”方法是MemoryCounter类,尤其是“ getCounter()”方法的实现。由于某种原因,它只会返回0。
弄清楚这一点后,我仍无法确定问题发生的原因或解决方法
答案 0 :(得分:-1)
因为它们是两个独立的计数器,所以它保持为0。
MemoryCounter类扩展了Counter类,因此您不需要单独的
{
"data": [
[
"Roshan Zaid",
"Stackoverflow user",
"New member"
],
[
"AmirAli Esteki",
"Stackoverflow and AskUbuntu user",
"New member"
]
]
}
只需通过static Counter counter = new Counter();
进行所有操作即可。