好吧所以我是ArrayList的新手,我想做的是制作一个程序,从一副54张卡中获得3张随机卡,没有任何重复.我不知道在我的if循环中放什么.请帮忙
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.util.ArrayList;
public class card_ran1 extends JFrame
{
public card_ran1()
{
ArrayList<Integer> Ran = new ArrayList<Integer>();
setLayout(new GridLayout(1,4,5,5));
Random random = new Random();
int i = random.nextInt(54) + 1 ;
int n = random.nextInt(54) + 1 ;
int m = random.nextInt(54) + 1 ;
Ran.add(i);
if (Ran.contains(n))
{
//what should go here
}
if (Ran.contains(m))
{
//what should go here
}
add(new JLabel(new ImageIcon("card/" + Ran.get(0) + ".png")));
add(new JLabel(new ImageIcon("card/" + Ran.get(1) + ".png")));
add(new JLabel(new ImageIcon("card/" + Ran.get(2) + ".png")));
}
public static void main(String[] args)
{
card_ran1 frame = new card_ran1();
frame.setTitle("Random Cards");
frame.setSize(600,300);
frame.setLocationRelativeTo( null );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}
Run Code Online (Sandbox Code Playgroud)
如果值是唯一的,请使用a Set,而不是a List.
Set<Integer> set = new LinkedHashSet<Integer>(); // order is preserved
Run Code Online (Sandbox Code Playgroud)
使用循环来获得3个不同的值:
while (set.size() < 3)
set.add(random.nextInt(54) + 1);
Run Code Online (Sandbox Code Playgroud)
如果您确实需要a List,请使用复制构造函数:
List<Integer> list = new ArrayList<Integer>(set);
Run Code Online (Sandbox Code Playgroud)
整个过程只需几行代码即可完成.