Как сделать рандомизированный 2D-массив в зависимости от нескольких переменных? - PullRequest
0 голосов
/ 07 мая 2020
• 1000 пытался создать вложенный для l oop, но в конечном итоге потерпел неудачу. Я не могу найти в Интернете ничего, что объясняет, как это сделать. Любая помощь или совет приветствуются. Ниже приведены все, что у меня есть прямо сейчас, без того, чтобы делать это.
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("");
            }
        }); 
    }
}

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Проверьте это.

 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");
            }
0 голосов
/ 07 мая 2020

Это должно работать:

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