Java获取一维数组的最小值实现方法
程序员文章站
2024-02-21 22:51:10
编写程序,实现接受用户在文本框中输入的单行数据。这些数据都是整数数字,以空格进行分隔,空格数量不限。并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中。思路是先对...
编写程序,实现接受用户在文本框中输入的单行数据。这些数据都是整数数字,以空格进行分隔,空格数量不限。并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中。思路是先对用户的输入进行验证,即先用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); //显示最小值到指定的标签中
}
}
效果如图所示: