public void actionPerformed(ActionEvent e) {
String inData;
int tal, slump=0, forsok=0;
if(e.getSource()==random){
slump=(int) (Math.random()*100+1);
}
//slumpar ett tal mellan 0 och 100
if(e.getSource()==ok){
forsok++;
try{
inData=tGissa.getText();
tal = Integer.parseInt(inData);
if(tal==slump){
JOptionPane.showMessageDialog(null, "Det är rätt! "+forsok+" försök.");
}
else if(tal<slump && tal>0){
JOptionPane.showMessageDialog(null, "För lågt!");
}
else if(tal>slump && tal<101){
JOptionPane.showMessageDialog(null, "För högt!");
}
else{
JOptionPane.showMessageDialog(null, "Felaktig inmatning!");
}
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, "Felaktig inmatning!");
}
}
}
您应该猜测1到100之间的正确数字,如果您是对或错,程序会给出反馈以及您做了多少尝试。
int&#34;颓势&#34;似乎总是为0,即使它应该被赋予随机函数的值。需要任何帮助。
答案 0 :(得分:0)
让我们描述一下这段代码的含义。
调用按钮时调用方法actionPerformed
。你没有显示其余的代码,但我会假设你的代码中有两个按钮,一个'随机'按钮和一个'ok'按钮。
首先声明并初始化一些局部变量。
int tal, slump=0, forsok=0;
然后,如果按下“随机”按钮,则为变量slump
分配一个随机数。
if(e.getSource()==random){
slump=(int) (Math.random()*100+1);
}
然后,如果按下“确定”按钮,则将输入的内容与变量slump
中的内容进行比较。
if(e.getSource()==ok){
// etc...
}
请注意,slump
和其他变量是局部变量。每次调用方法时都会创建它们,并在方法完成时再次消失。所以,这就是发生的事情:
actionPerformed
方法。slump
。该方法返回并丢弃局部变量。您保存的随机数现已消失。
点击“确定”。再次调用actionPerformed
方法。
slump
已初始化为0
。slump
进行比较。你现在看到为什么这不起作用?每次调用该方法时都会有一个新变量slump
。
您必须将其他地方的随机数保存在类的成员变量中,而不是保存在本地变量中。