计数器重置为java
我正在做一项学校作业
任务是制作一个随机选择一个数字的程序,用户必须猜测该数字
程序应该保留用户提交输入的次数计数(count var)
我知道计数器被重置的问题来自方法的初始化步骤。。。。如果my count变量的值大于0,是否有方法绕过初始化步骤
我已提交我的代码如下:
public static void main(String[] args) {
Random rand = new Random();
int randomnumber = rand.nextInt(50);
int machine = GuessMachine(Integer.parseInt(JOptionPane.showInputDialog("gok een getal")), randomnumber);
}
public static int CallPane(int Value, int rndNumber) {
int X1;
X1 = Integer.parseInt(JOptionPane.showInputDialog("gok een getal3"));
int machine = GuessMachine(X1, rndNumber);
return X1;
}
public static int GuessMachine(int InputNumber, int rndNumber) {
int value = InputNumber;
int randomNumber = rndNumber;
int count=0;
if (InputNumber == randomNumber) {
count =+1;
JOptionPane.showMessageDialog(null, "Goed! Je deed er "+count+" keer " );
int Response = JOptionPane.showConfirmDialog(null, "Nog een keer spelen?", "Bevestigen",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (Response == JOptionPane.NO_OPTION) {
JOptionPane.showMessageDialog(null, "tot de volgende keer");
}
else if (Response == JOptionPane.YES_OPTION) {
Random rand = new Random();
int randomnumber = rand.nextInt(50);
//callpane
int machine = GuessMachine(Integer.parseInt(JOptionPane.showInputDialog("gok een getal")), randomnumber);
}
}
else if (InputNumber < randomNumber) {
JOptionPane.showMessageDialog(null, "te weinig");
int PaneInput = CallPane(value, randomNumber);
count+=1;
}
else if (InputNumber > randomNumber) {
// JOptionPane.showMessageDialog(null,"teveel", "information", >INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "teveel");
int PaneInput = CallPane(value, randomNumber);
count=+1;
}
return value;
}
----建议后更新代码---
public static int count=0;
public static void main(String[] args) {
// TODO code application logic here
Random rand = new Random();
int randomnumber = rand.nextInt(50);
int machine = GuessMachine(Integer.parseInt(JOptionPane.showInputDialog("gok een getal")), randomnumber);
JOptionPane.showMessageDialog(null, count);
}
public static int CallPane(int Value, int rndNumber) {
int X1;
X1 = Integer.parseInt(JOptionPane.showInputDialog("gok een getal3"));
int machine = GuessMachine(X1, rndNumber);
return X1;
}
public static int GuessMachine(int InputNumber, int rndNumber) {
int value = InputNumber;
int randomNumber = rndNumber;
if (InputNumber == randomNumber) {
count +=1;
JOptionPane.showMessageDialog(null, "Goed! Je deed er "+count+" keer " );
int Response = JOptionPane.showConfirmDialog(null, "Nog een keer spelen?", "Bevestigen",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (Response == JOptionPane.NO_OPTION) {
JOptionPane.showMessageDialog(null, "tot de volgende keer");
}
else if (Response == JOptionPane.YES_OPTION) {
Random rand = new Random();
int randomnumber = rand.nextInt(50);
//callpane
int machine = GuessMachine(Integer.parseInt(JOptionPane.showInputDialog("gok een getal")), randomnumber);
}
}
else if (InputNumber < randomNumber) {
JOptionPane.showMessageDialog(null, "te weinig");
int PaneInput = CallPane(value, randomNumber);
count+=1;
}
else if (InputNumber > randomNumber) {
// JOptionPane.showMessageDialog(null,"teveel", "information", INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "teveel");
int PaneInput = CallPane(value, randomNumber);
count+=1;
}
return value;
}
}
# 1 楼答案
将count变量设为类成员:
然后在GuessMachine中删除同名的局部变量
# 2 楼答案
count +=1
或者是安全的count = count + 1
count
需要是静态的,因为它必须在调用函数时保持值GuessMachine
时,计数都会被重置。想一想GuessMachine
将如何一次又一次地被呼叫。这意味着您将一次又一次地在函数GuessMachine
的顶部执行count = 0
。您需要将count = 0
的初始化从函数GuessMachine
中取出,放入函数main
中,因为即使在将其设置为静态之后,如果每次调用GuessMachine时都对其进行初始化,count
仍将被重置李>你的代码还有一个问题。在
GuessMachine
2中的if
块中,共有3次,count
的增量太晚了。它需要立即递增。事实上,它是同一段代码,所以我们可以将其从if
块中取出我建议你逐步完成这个项目。尝试“干运行”,并尝试使用调试器单步执行每一条语句,以了解此代码的控制流。似乎你需要大量的实践来理解如何设计代码和调试它
# 3 楼答案
您在整个代码中所做的是,您错误地键入了count=+1此外,count变量必须声明为class属性,即public static int count=0
此外,在调用CallPane()方法后,您正在增加count,因为它永远无法增加
这就是错误,因此每次都会重置!将此语句替换为count+=1此外,还声明
count as static
要通过从类中的任何位置递增来更新。会很好用的!我在下面展示了:# 4 楼答案
初始化count变量的方法如下所示:我做了一个count变量和两个方法initializeCount()和incrementalCount()。每次我得到一个计数变量时,我都会通过方法incrementalCount()添加1来更新它。当我需要再次初始化变量时,我使用initializeCount()