gpt4 book ai didi

java - 不是每次都选择随机项目

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:28 25 4
gpt4 key购买 nike

所以我正在尝试制作一个程序,当我单击“滑板或骰子”按钮时,每个标签(代表骰子)都会更改为它所属的相应列表中的随机元素。但到目前为止,当我单击按钮时,标签不会更改为随机元素,每次单击它时它都会给我相同的元素。当我单击按钮时,我通过将其打印到系统来测试输出,当然我每次都会得到相同的 4 个答案。我需要一些帮助来弄清楚为什么它从每个列表中重复选择相同的元素,而不是每次都选择不同的元素。

这是我的主课

package skateordicegui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class SKFrame extends SkateDice {

public JFrame jf;

public JPanel jp;

static public JButton sod = new JButton("SKATE OR DICE!!");

static public JLabel l1 = new JLabel("Stance");
static public JLabel l2 = new JLabel("Turn");
static public JLabel l3 = new JLabel("Flip");
static public JLabel l4 = new JLabel("Spin");

public SKFrame() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

jf = new JFrame();
jf.setSize((d.width / 2), (d.height / 2));
jf.setLocation((d.width / 2 - d.width / 4 ), (d.height / 2 - d.height / 4));
jf.setMinimumSize(jf.getSize());
jf.setResizable(true);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

l1.setBounds(110, 150, 100, 40);
l2.setBounds(230, 150, 100, 40);
l3.setBounds(350, 150, 100,40);
l4.setBounds(470, 150, 100,40);

sod.setLocation(140, 20);
sod.setSize(300, 100);

jp = new JPanel();
jp.setLayout(new FlowLayout(FlowLayout.CENTER));
jp.setSize(jf.getWidth(), jf.getHeight() / 2);

jp.add(l1);
jp.add(l2);
jp.add(l3);
jp.add(l4);
jp.add(sod);

jf.add(jp);
sod.addActionListener(action);
}

public ActionListener action = new ActionListener() {
public void actionPerformed(ActionEvent e) {

Object source = e.getSource();
if (source == sod) {
System.out.println(SkateDice.getStance());
System.out.println(SkateDice.getTurn());
System.out.println(SkateDice.getFlip());
System.out.println(SkateDice.getSpin());

l1.setText(SkateDice.getStance());
l2.setText(SkateDice.getTurn());
l3.setText(SkateDice.getFlip());
l4.setText(SkateDice.getSpin());
} else
System.out.println("no swag");
}
};



public static void main(String[] args) {


SKFrame skf = new SKFrame();

}

}

这是我的 SkateDice 类(class)

package skateordicegui;

import java.util.Random;

public class SkateDice {

static Random r = new Random();

// First time dealing with arrays
//this is the easy way (kinda like python)

static String[] d1 = {"Kickflip", "Kickflip", "Kickflip", "Heelflip", "Heelflip","Heelflip", "Shuv", "3 Shuv", "Shuv", "3 Shuv", "X", "Skate Or Dice"};
static String[] d2 = {"180", "180", "180", "360", "360", "360", "X", "Skate Or Dice"};
//OR
static String d3[] = {"FS", "FS", "BS", "BS", "FS", "BS", "X", "Skate Or Dice"};
static String d4[] = {"Regular", "Regular", "Regular", "Switch", "Switch", "Switch", "Nollie", "Nollie", "Nollie", "Fakie", "Fakie", "Fakie", "X", "Skate Or Dice"};

public static int r1 = r.nextInt(d1.length);
public static int r2 = r.nextInt(d2.length);
public static int r3 = r.nextInt(d3.length);
public static int r4 = r.nextInt(d4.length);

public static String flip = d1[r1];
public static String spin = d2[r2];
public static String turn = d3[r3];
public static String stance = d4[r4];


static public String getFlip() {
return flip;
}

static public String getSpin() {
return spin;
}

static public String getTurn() {
return turn;
}

static public String getStance() {
return stance;
}


}

最佳答案

当您调用 getter 时,它们只是按预期返回翻转、旋转、转动和姿态的值。如果您需要它们在每次调用它们时更改值,您应该实现如下:

static public String getFlip() {
// generates a new random number
r1 = r.nextInt(d1.length);

// set a new value to flip
flip = d1[r1];

// return the value
return flip;
}

向其他 getter 重复此逻辑,您的程序应该可以运行。

关于java - 不是每次都选择随机项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35789064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com