編寫程式,實現接受使用者在文字框中輸入的單行資料。這些資料都是整數數字,以空格進行分隔,空格數量不限。並將這些資料分割成一維數組,再從數組中提取最小值顯示在介面中。思路是先對使用者的輸入進行驗證,即先用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); //顯示最小值到指定的標籤中
}
}
效果如圖所示: