关于#java#的问题:应用所学面向对象程序设计的知识和理论,设计一个数组处理系统,系统要求实现以下基本功难:(1)要具有基本的gui界面(2)自动生成随机的整数数组

应用所学面向对象程序设计的知识和理论,设计一个数组处理系统,系统要求实现以下基本功难:
(1)要具有基本的gui界面
(2)自动生成随机的整数数组;数组保存到指定的文件;对数组进行升序、降序排列;查找出最小值/最大值所在的数组元素,包括元素下标和元素值;计算数组的平均值

import java.awt.FlowLayout;
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.JTextField;

public class ArrayProcessingSystem extends JFrame implements ActionListener{

    private static final long serialVersionUID = 1L;
    private JLabel label;
    private JTextField textField;
    private JButton button;
    private String arrayString;

    public ArrayProcessingSystem() {
        super("数组处理系统");
        setBounds(100, 100, 400, 150);
        setLayout(new FlowLayout());

        label = new JLabel("生成一个包含多少个随机整数的数组:");
        add(label);

        textField = new JTextField(10);
        add(textField);

        button = new JButton("生成数组");
        add(button);
        button.addActionListener(this);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == button) {
            int num = Integer.parseInt(textField.getText());
            Random r = new Random();
            int[] array = new int[num];
            arrayString = "随机生成的数组为:\n[";
            for (int i = 0; i < num; i++) {
                array[i] = r.nextInt(100);
                arrayString += array[i];
                if (i != num - 1) {
                    arrayString += ", ";
                }
            }
            arrayString += "]";
            label.setText(arrayString);
        }
    }

    public static void main(String[] args) {
        ArrayProcessingSystem arrayProcessingSystem = new ArrayProcessingSystem();
        arrayProcessingSystem.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        arrayProcessingSystem.setVisible(true);
    }
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7536503
  • 除此之外, 这篇博客: 回溯法与分支限界法的总结中的 在当前节点(扩展节点)处,先生成其所有的子节点(分支),然后再从当前的活节点(当前节点的子节点)表中选择下一个扩展节点。为了有效地选择下一个扩展节点,加速搜索的进程,在每一个活节点处,计算一个函数值(限界),并根据函数值,从当前活节点表中选择一个最有利的节点作为扩展节点,使搜索朝着解空间上有最优解的分支推进,以便尽快地找出一个最优解。分支限界法解决了大量离散最优化的问题。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 编写回溯算法代码时,要先考虑这个问题是一个什么搜索树,然后套用那个搜索树模板就行了。(例如:子集树就是:判断是否满足约束条件——计算、x[i]=1——递归左子树——归还——x[i]=0、递归右子树(注意限界思想))
    (例如:排列树就是:循环——判断是否满足约束条件——交换——计算——递归(注意限界思想)——归还)
    当然具体算法要具体分析
    还要注意及时更新解和存储解,别忘了进入右子树、循环结束前,要将你算的、交换过的东西,要归还回去。注意到达叶结点干什么,没有到达怎么做

    而分支限界算法的代码编写,首先编写三个类:活结点类、活结点属性类、入队类。然后选择好什么样的队列方式。一定要考虑好属性,然后什么时候添加结点、以及出队、和存储最优解

    两个算法编写,还要注意限界函数的设置,怎么设计一个好的代价函数可以裁掉更多的空间。这就是两个算法的优化思想。

    当然最重要的还要考虑好约束条件。

    具体逻辑代码还是多写多练。多去总结。这里也就只讲个大体思路。

  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 第三方市场分析,安装试用第三方网页应用及小程序应用,了解安装及授权安装流程小节, 巩固相关知识点