【问题标题】:How to make a randomized 2D Array depending on multiple variables?如何根据多个变量制作随机二维数组?
【发布时间】:2020-05-07 07:02:32
【问题描述】:

我现在有代码可以接受用户输入来自定义 JTextArea 的行数和列数,我想使用相同的变量来制作一个 2d 数组,其中填充随机值,范围从 0 到 2,我尝试创建嵌套 for 循环但最终失败。我在网上找不到任何可以回答如何做到这一点的东西。任何帮助或建议表示赞赏。以下是我现在所拥有的一切,没有任何事情要做。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Main {

    int tf1r = 0;
    int tf2c = 0;
    String space = ", ";
    JPanel panel;
    JLabel label;
    JTextField tf1, tf2;
    JButton set, reset;
    JTextArea ta;


    public static void main(String[] args) {

        // Frame
        JFrame frame = new JFrame("Mapped Array");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 600);
        frame.setResizable(false);

        // Menu Bar
        JMenuBar mb = new JMenuBar();
        JMenu m1 = new JMenu("EXPORT");
        JMenu m2 = new JMenu("HELP");
        mb.add(m1);
        mb.add(m2);
        JMenuItem m11 = new JMenuItem("TXT");
        JMenuItem m22 = new JMenuItem("BAT");
        m1.add(m11);
        m1.add(m22);

        // Panel Bottom and Components
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Enter Rows and Columns");
        JTextField tf1 = new JTextField(10);
        JTextField tf2 = new JTextField(10);
        JButton set = new JButton("SET");
        JButton reset = new JButton("RESET");
        panel.add(label);
        panel.add(tf1);
        panel.add(tf2);
        panel.add(set);
        panel.add(reset);

        // Center TextArea
        JTextArea ta = new JTextArea();

        // Components to Frame
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.NORTH, mb);
        frame.getContentPane().add(BorderLayout.CENTER, ta);
        frame.setVisible(true);

        //Sets Text
        set.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String space = ", ";
                String rows = tf1.getText();
                String columns = tf2.getText();
                int tf1r = Integer.parseInt(rows);
                int tf2c = Integer.parseInt(columns);

                ta.setRows(tf1r);
                ta.setColumns(tf2c);



                System.out.println("rows: "+tf1r+" columns: "+tf2c+" TaR: "+ta.getRows()+" TaC: "+ta.getColumns());

                ta.setText(rows+space+columns+"\n100, 100\n");
            }
        }); 

        //Resets Text
        reset.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ta.setText("");
            }
        }); 
    }
}

【问题讨论】:

    标签: java swing for-loop random


    【解决方案1】:

    这应该可行:

    tf1r = Integer.parseInt(rows);
    tf2c = Integer.parseInt(columns);
    
    Random random = new Random();
    int[][] values = new int[tf1r][tf2c];
    
    for(int i = 0; i < values.length; i++)
        for(int j = 0; j < values[i].length; j++)
            values[i][j] = random.nextInt(3);
    

    【讨论】:

    • 非常感谢,它运行良好,比我开始做的更紧凑,非常感谢。
    【解决方案2】:

    检查一下。

     public void actionPerformed(ActionEvent e) {
                    String space = ", ";
                    String rows = tf1.getText();
                    String columns = tf2.getText();
                    int tf1r = Integer.parseInt(rows);
                    int tf2c = Integer.parseInt(columns);
    
                    ta.setRows(tf1r);
                    ta.setColumns(tf2c);
    
                    Random random = new Random();
                    int[][] randomArray = new int[tf1r][tf2c];
                    for (int i = 0; i < tf1r; i++) {
                        for (int j = 0; j < tf2c; j++) {
                            randomArray[i][j] = random.nextInt(3);
                        }
                    }
    
    
                    System.out.println("rows: "+tf1r+" columns: "+tf2c+" TaR: "+ta.getRows()+" TaC: "+ta.getColumns());
    
                    ta.setText(rows+space+columns+"\n100, 100\n");
                }
    

    【讨论】:

    • 已经回答了,但还是非常感谢,非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2016-12-17
    • 2021-02-26
    • 2021-12-16
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多