[Java] [コンポーネントとイベント処理] selectionsortメソッドを使用して配列をソートします

ここに画像の説明を挿入

MyFrame:


package com.itheima;
import javax.swing.*;
import java.awt.*;
public class MyFrame extends JFrame{
    
    
    JTextArea area1,area2;
    JButton button1,button2,clearButton;
    PoliceListen policeListen;
    public MyFrame() {
    
    
        init();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    void init(){
    
    
        setLayout(new FlowLayout());
        area1 = new JTextArea(9,30);
        area2 = new JTextArea(9,30);
        button1 = new JButton("生成随机数组");
        button2 = new JButton("排序");
        clearButton = new JButton("清除");
        add(new JScrollPane(area1));
        add(button1);
        add(new JScrollPane(area2));
        add(button2);
        add(clearButton);
        policeListen = new PoliceListen();
        policeListen.setArea1(area1);
        policeListen.setArea2(area2);
        policeListen.setButton1(button1);
        policeListen.setButton2(button2);
        policeListen.setClearButton1(clearButton);
        button1.addActionListener(policeListen);
        button2.addActionListener(policeListen);
        clearButton.addActionListener(policeListen);
    }
}

PoliceListen

package com.itheima;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class PoliceListen implements ActionListener {
    
    
    JTextArea area1,area2;
    JButton button1,button2,clearButton;
    int Array[] = new int[10];
    Random random = new Random();
    public void setArea1(JTextArea area1) {
    
    
        this.area1 = area1;
    }

    public void setArea2(JTextArea area2) {
    
    
        this.area2 = area2;
    }

    public void setButton1(JButton button1) {
    
    
        this.button1 = button1;
    }

    public void setButton2(JButton button2) {
    
    
        this.button2 = button2;
    }

    public void setClearButton1(JButton clearButton) {
    
    
        this.clearButton = clearButton;
    }


    @Override
    public void actionPerformed(ActionEvent e) {
    
    
        if(e.getSource() == button1){
    
    
            for (int i = 0; i < 10; i++) {
    
    
                Array[i] = random.nextInt(50);
                area1.append(Integer.toString(Array[i]) + " ");
            }
            area1.append("\n");
        }
        if(e.getSource() == button2){
    
    
            String []numstrs = area1.getText().split("\n{1,}");
            // 1.将文本域2的每一行放到字符串数组中
            String nums[];
            int numberArray[];
            int temp;
            for(int i=0;i<numstrs.length;i++){
    
    
                nums = numstrs[i].split(" {1,}");
                // 2.将文本域第i行一空以空格作为条件分割,每个数字作为元素
                numberArray = new int[nums.length];
                for(int x=0;x<numberArray.length;x++){
    
    
                    numberArray[x] = Integer.parseInt(nums[x]);
                    //3.字符串转换为整型
                }
                for(int j=0;j<numberArray.length;j++){
    
     //选择排序
                    for (int k = j+1; k <numberArray.length; k++) {
    
    
                        if(numberArray[j] > numberArray[k]){
    
    
                            temp = numberArray[j];
                            numberArray[j] = numberArray[k];
                            numberArray[k] = temp;
                        }
                    }
                }
                for (int m = 0; m <numberArray.length; m++) {
    
     //添加
                    area2.append(numberArray[m] + " ");
                }
                area2.append("\n");
            }
        }
        if(e.getSource() == clearButton){
    
    
            area1.setText("");
            area2.setText("");
        }
    }
}


メイン:

package com.itheima;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        MyFrame myFrame = new MyFrame();
        myFrame.setBounds(100,100,350,420);
        myFrame.setTitle("选择排序法");
    }
}

ここに画像の説明を挿入
この質問は、ファイルを読むのと少し似ています。
最初のステップは、テキストフィールド1の各行を読み取り、それを文字列配列numstrs []に格納することです(分割条件の代わりに)。
2番目のステップは、numstrs []配列をトラバースすることです。トラバースするたびに、文字列配列nums []が生成され、各行のすべての数値が格納されます(分割方法としてスペースを使用)。
3番目のステップは、numberArray []整数配列を生成し、nums []配列の各要素を整数に変換して、number / array []配列に格納することです。

おすすめ

転載: blog.csdn.net/weixin_48180029/article/details/112033953