当前位置: 首页 > 知识库问答 >
问题:

如何将随机数arraylist放入数组?

公西志文
2023-03-14

在…方面

if(boton == cartas[0]){

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

在我的代码中,我试图放入一个我之前生成的随机数,但当applet启动时,当我按下按钮时,它会给我一个错误,我想把代码放入所有的按钮,因为我不想要重复的数字,我想要每个按钮随机生成的数字。我希望你能帮助我。

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);
                }
            }


        }

我得到的错误是线程“AWT-EventQueue-1”java.lang.IndexOutOfBoundsException:index:0,size:0中的异常

共有1个答案

弘阳德
2023-03-14

很难说,因为我们没有关于如何/是否调用所有这些方法的证据,但我可以告诉您,我注意到您有一个成员变量list,但是在random()方法中,您声明并使用了一个局部变量,该变量可能涵盖了成员变量。因此,成员变量list可能保持为空,当您试图在actionperformed()中访问它时,将使用“empty”成员变量list,因此任何索引都将越界。

因此,我建议您从Random方法中删除列表的声明。

 类似资料:
  • 问题内容: 我有一个像这样的数组: 如何将其随机/随机播放? 问题答案: 实际无偏混洗算法是Fisher-Yates(aka Knuth)。

  • 问题内容: 我必须通过Volley Framework提出要求。这是带有JSONObject的POST请求。 我必须传递一个字符串和一个JSONArray ..但是我怎么能呢? 我从这个开始: 如果我尝试使用浏览器,则必须进行以下设置: 问题答案: 您需要先制作一个JSON数组,然后将其存储

  • 我得到了一个充满“项目”的枚举,我想生成枚举中的一个随机项目并将其放入我的清单中,我用数组制作了清单。数组只有10 int的空间。

  • 这只是一个简单的音乐应用程序。在中搜索时,我希望同时搜索并列出作曲家的姓名和歌曲标题。这是我在Firebase中的实时数据库。 我试图在android studio中访问这两个数据库,但ArrayList(=array)中的数据结果始终为空。单击“搜索”按钮时,以下是我在中的kotlin代码。 是否可以访问两个数据库并获取一个没有空值的数组值?我知道,发生得很晚,但是否可以将值放入数组,然后放入适

  • 问题内容: 我有问题来存储的所有值成。这里和是数组的数组。我想将它们的所有值分别存储在和中。的和是字符串的数组。 这是我的尝试,但仅存储每个数组的最后一项。 注意:我已经尝试过了,但是对我不起作用。 问题答案: 为了通用,首先让它成为对象列表 您想要放入对象列表 注意结果列表将包含每个对象,包含的是输入列表。 这种转换将丢失有关哪个对象位于哪个列表中的信息。 您必须遍历。在每个循环中,您都会获得一

  • 问题内容: 我想从字节数组中提取一组坐标到DoubleBuffer中。 以下是如何将一组坐标从主字节数组提取到另一个字节数组的示例。 我的问题是: 如何将geomCoords字节数组放入DoubleBuffer? 还是 可以在不创建geomCoords的情况下将这些数据放入DoubleBuffer中?速度和效率是关键,因此任何捷径或优化都是最欢迎的! 问题答案: 如果您知道字节缓冲区中的8个字节确