欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java获取一维数组的最小值实现方法

程序员文章站 2024-02-24 16:22:40
编写程序,实现接受用户在文本框中输入的单行数据。这些数据都是整数数字,以空格进行分隔,空格数量不限。并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中。思路是先对...

编写程序,实现接受用户在文本框中输入的单行数据。这些数据都是整数数字,以空格进行分隔,空格数量不限。并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中。思路是先对用户的输入进行验证,即先用trim()函数过滤用户输入字符串的左右空格,若结果为空字符串则用joptionpane类的showmessagedialog方法提示用户"请输入数字内容"。若用户输入非空则使用charat函数对用户输入字符串中的每一个字符进行判断,若其既非数字也非空格则提示"输入包含非数字内容",然后使用settext()函数将用户输入框中的数据清空。若通过验证则创建一个字符串型一维数组,其元素是用户输入字符串以空格分隔后得到的内容。然后创建一个整型一维数组,并为其开辟等同于字符串型数组长度的空间。然后通过integer类的valueof()函数转换输入为整型数组。创建最小数变量,并初始化为整型数组的第一个元素。使用for循环遍历该整型数组以提取最小整数,最后使用settext()函数显示最小值到指定的标签中。

代码如下:

复制代码 代码如下:

import java.awt.eventqueue;

import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.jtextfield;
import javax.swing.jbutton;
import java.awt.event.actionlistener;
import java.awt.event.actionevent;
import javax.swing.joptionpane;

public class arrayminvalue {

    private jframe frame;
    private jtextfield textfield;
    jlabel lblnewlabel_1 = new jlabel();
    /**
     * launch the application.
     */
    public static void main(string[] args) {
        eventqueue.invokelater(new runnable() {
            public void run() {
                try {
                    arrayminvalue window = new arrayminvalue();
                    window.frame.setvisible(true);
                } catch (exception e) {
                    e.printstacktrace();
                }
            }
        });
    }

    /**
     * create the application.
     */
    public arrayminvalue() {
        initialize();
    }

    /**
     * initialize the contents of the frame.
     */
    private void initialize() {
        frame = new jframe("获取一维数组最小值");
        frame.setbounds(100, 100, 450, 150);
        frame.setdefaultcloseoperation(jframe.exit_on_close);
        frame.getcontentpane().setlayout(null);

        jlabel lblnewlabel = new jlabel("请在文本框中输入多个整数,以空格为分隔符。例如:3 5 2 562 125");
        lblnewlabel.setbounds(10, 10, 414, 15);
        frame.getcontentpane().add(lblnewlabel);

        textfield = new jtextfield();
        textfield.setbounds(10, 35, 414, 21);
        frame.getcontentpane().add(textfield);
        textfield.setcolumns(10);      
        lblnewlabel_1.setbounds(115, 70, 309, 15);
        frame.getcontentpane().add(lblnewlabel_1);
        jbutton button = new jbutton("\u8ba1\u7b97");
        button.addactionlistener(new actionlistener() {
            public void actionperformed(actionevent e) {
                do_button_actionperformed(e);
            }
        });
        button.setbounds(10, 66, 93, 23);
        frame.getcontentpane().add(button);    
    }
    protected void do_button_actionperformed(actionevent e) {
        string arraystr = textfield.gettext().trim();           //去除左右空格
        if(arraystr.equals("")){
            joptionpane.showmessagedialog(null, "请输入数字内容");
            return;
        }
        for (int i = 0; i < arraystr.length(); i++) {                // 过滤非法输入
            char charat = arraystr.charat(i);
            if (!character.isdigit(charat) && charat != ' ') {
                joptionpane.showmessagedialog(null, "输入包含非数字内容");
                textfield.settext("");
                return;
            }
        }
        string[] numstrs = arraystr.split(" {1,}");         // 分割字符串
        int[] numarray = new int[numstrs.length];           // 创建整型数组
        // 转换输入为整型数组
        for (int i = 0; i < numarray.length; i++) {
            numarray[i] = integer.valueof(numstrs[i]);
        }
        int min = numarray[0];                          // 创建最小数变量
        for (int j = 0; j < numarray.length; j++) {
            if (min > numarray[j]) {                 // 提取最小整数
                min = numarray[j];
            }
        }
        lblnewlabel_1.settext("数组中最小的数是:" + min);       //显示最小值到指定的标签中
    }
}

效果如图所示:

Java获取一维数组的最小值实现方法