如何在数组中放置一个随机数arraylist?

时间:2016-05-06 23:53:12

标签: java

部分

if(boton == cartas[0]){

                    cartas[0].setLabel(figuras[Memorando.list.get(i)]);
                }

在我的代码中,我试图输入一个我之前生成的随机数,但是当applet启动它时,当我按下按钮时出现错误,我想将该代码放在所有按钮中,因为我不知道#39;我想要重复的数字,我想为每个按钮随机生成一个数字。我希望你能帮助我。

import javax.swing.*;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Stack;
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
import java.util.*;
public class Memorando extends Applet implements ActionListener {
    JButton cartas[];
    JButton juegoNuevo;
    Label marcador;
    public static ArrayList<Integer> list = new ArrayList<Integer>();

    public static ArrayList<Integer> random() {
        ArrayList<Integer> list = new ArrayList<Integer>();
        for (int i=0; i<4; i++) {
            list.add(new Integer(i));
        }
        Collections.shuffle(list);
        for (int i=0; i<4; i++) {
            System.out.println(list.get(i));
        }
        return list;
    }

    public void init(){
        this.setLayout(new BorderLayout());
        this.setBackground(Color.CYAN);
        Font appletFont=new Font("Monospased", Font.BOLD, 20);
        this.setFont(appletFont);
        juegoNuevo=new JButton("Juego nuevo");
        juegoNuevo.addActionListener(this);
        Panel topPanel=new Panel();
        topPanel.add(juegoNuevo);
        this.add(topPanel,"North");
        cartas=new JButton[8];

        Panel panelCentral=new Panel();
        panelCentral.setLayout(new GridLayout(2,4));
        this.add(panelCentral,"Center");
        marcador=new Label("No has ganado aun :(");
        this.add(marcador,"South");
        for(int i=0;i<8;i++){
            cartas[i]=new JButton("*********");
            cartas[i].addActionListener(this);
        cartas[i].setBackground(Color.WHITE);
            panelCentral.add(cartas[i]);
        }
    }



    public void actionPerformed(ActionEvent e) {


        JButton boton=(JButton) e.getSource();


        String[] figuras=new String[8];
        figuras[0]="♥";
        figuras[1]="♣";
        figuras[2]="♠";
        figuras[3]="♦";


        if(boton == juegoNuevo){ 
            for(i=0;i<8;i++){

            cartas[i].setEnabled(true); cartas[i].setLabel("*********");
                 cartas[i].setBackground(Color.CYAN);
               }

            marcador.setText("Juego nuevo"); 
            juegoNuevo.setEnabled(false);
            return; 

        }

        if(boton == cartas[0]){

                    cartas[0].setLabel(figuras[Memorando.list.get(0)]);
                }

                    if(boton == cartas[1]){
                        int numAleatorio=(int) (Math.random()*4);
                        cartas[1].setLabel(figuras[numAleatorio]);
                        }
                    if(boton == cartas[2]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[2].setLabel(figuras[numAleatorio]);
                            }
                    if(boton == cartas[3]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[3].setLabel(figuras[numAleatorio]);
                            }
                    if(boton == cartas[4]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[4].setLabel(figuras[numAleatorio]);
                            }
                    if(boton == cartas[5]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[5].setLabel(figuras[numAleatorio]);
                            }
                    if(boton == cartas[6]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[6].setLabel(figuras[numAleatorio]);
                            }
                    if(boton == cartas[7]){
                        int numAleatorio=(int) (Math.random()*4);
                                cartas[7].setLabel(figuras[numAleatorio]);
                            }
    }


            void finDelJuego(){
                juegoNuevo.setEnabled(true);
                for(int i=0;i<8;i++){
                    cartas[i].setEnabled(false);
                }
            }


        }

我得到的错误是 线程中的异常&#34; AWT-EventQueue-1&#34; java.lang.IndexOutOfBoundsException:Index:0,Size:0

1 个答案:

答案 0 :(得分:0)

很难说,因为我们没有关于你如何/是否调用所有这些方法的证据,但我可以告诉你,我注意到你有一个成员变量list,但是在random()方法中,您声明并使用可能涵盖成员变量本地变量。因此,成员变量list可能会保持为空,当您尝试在actionPerformed()中访问该成员变量时,该变量将为空{&1;}使用成员变量list,因此任何索引都将超出范围。

因此,我建议您从list方法中删除random的声明。