每次单击按钮计算生成的随机数

时间:2013-10-18 19:26:51

标签: java swing random sum jbutton

我有一个java应用程序,每次单击按钮时会生成1到11之间的随机数,我的问题是我想在每次单击按钮时将生成的nubmers相加,例如,如果我单击按钮三次然后我想要每次通过单击按钮创建的所有三个随机数的总和。 抱歉我的英语不好,我会非常感谢你的帮助。

这是我的代码:

  public class Game extends JFrame implements ActionListener{
private static JFrame frame;
private static JPanel p;
private static JButton b;
private static JButton choose;
private static JLabel random;
private static JLabel sumRandom;

public static void main(String[] args) {
    Game bl= new Game();
    bl.gui();


}
public void gui(){
    frame=new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 500);
    frame.setLocation(500, 200);
    frame.setTitle("Blackjack");


    p= new JPanel();
    p.setLayout(null);
    p.setBackground(Color.GRAY);


    b = new JButton("Start play");
    b.setBounds(450, 50, 200, 50);

    b.addActionListener(this);

    choose= new JButton("choose");
    choose.setBounds(100, 50, 200, 50);
    choose.addActionListener(this);

    random= new JLabel("");
    random.setBounds(200, 150, 200, 50);

    sumRandom= new JLabel("");
    sumRandom.setBounds(30, 150, 200, 50);
    //text.setText();
    p.add(sumRandom);
    p.add(random);
    p.add(b);
    frame.add(p);
    frame.setVisible(true);
}

public void actionPerformed(ActionEvent e){

    if(e.getSource()== b){

        p.add(choose);
        b.setEnabled(false);
    }
    if(e.getSource()== choose){
        int randomNumbers = (int )(Math.random() * 11 + 1);
        random.setText(String.valueOf(random));
        int sum= randomNumbers++;
        sumRandom.setText(String.valueOf(sum));
    }
}

}

5 个答案:

答案 0 :(得分:1)

有什么问题?将新的int字段添加到您的类中。然后将actionPerformed方法中生成的随机数与它相加。

答案 1 :(得分:0)

创建sum变量作为实例变量或静态变量,当生成随机数时,只需输入:

sum += randomNumbers

答案 2 :(得分:0)

问题在于

int sum= randomNumbers++;
像斯坦尼斯拉夫说的那样,你会想要获得当前的金额并加入它。您可以使用int字段和sum = currentSum + randomNumbers;之类的内容,也可以解析当前sumRandom上的文本:

int currentSum = Integer.parseInt(sumRandom.getText());
currentSum += randomNumbers;
sumRandom.setText(String.valueOf(currentSum));

当然,只有当你没有在其他任何地方设置sumRandom的文本时,才应该使用后一种方法,而我认为前者更清洁。

答案 3 :(得分:0)

添加字段以对卡的值求和。确保你有一个机制,可能在开始播放按钮,一旦新手被发出,重置字段的值。

答案 4 :(得分:0)

声明一个变量来保存你的总和,

public class Game extends JFrame implements ActionListener{
    private static JFrame frame;
    private static JPanel p;
    private static JButton b;
    private static JButton choose;
    private static JLabel random;
    private static JLabel sumRandom;
    private static int sumRandomNumbers; //declare sum

初始化,

    private void sumRandomNumbersInit() { sumRandomNumbers=0; }

报告,

    public int sumRandomNumbersget() { return sumRandomNumbers; }

初始化,

public void gui(){
    //...
    sumRandomNumbersInit();
    //...
}

将每个生成的随机数添加到sumRandomNumbers

if(e.getSource()== choose){
    int randomNumbers = (int )(Math.random() * 11 + 1);
    random.setText(String.valueOf(random));
    int sum= randomNumbers++; //not sure what your intent is here, you assign sum the value of randomNumbers, then increment randomNumbers?
    sumRandomNumbers += randomNumbers; //add this random number to sum
    //sumRandom.setText(String.valueOf(sum)); //why?
    sumRandom.setText(String.valueOf(sumRandomNumbers)); //display sum
}