เขียนโปรแกรมเพื่อป้อนชื่อของผู้ชมทั้งหมดลงในอาเรย์ล่วงหน้า จากนั้นรับจำนวนองค์ประกอบอาเรย์ทั้งหมด และสุดท้ายสุ่มแยกตัวห้อยขององค์ประกอบจากอาเรย์อิลิเมนต์ และได้ชื่อผู้โชคดีตาม ตัวห้อยที่แยกออกมา
แนวคิดมีดังนี้:
กำหนดเหตุการณ์สำคัญของกล่องอินพุต และใช้ฟังก์ชัน getKeyChar() ของคลาส KeyEvent เพื่อตรวจสอบว่าเป็นอักขระขึ้นบรรทัดใหม่หรือไม่ ถ้าไม่เช่นนั้น ก็จะไม่ถูกประมวลผล
ใช้ฟังก์ชัน isEmpty() เพื่อตรวจสอบว่ามีสตริงอยู่ในกล่องข้อความหรือไม่ หากไม่มีสตริง จะไม่มีการประมวลผล
หากเป็นการป้อนข้อมูลทางกฎหมาย ให้เพิ่มชื่อของผู้ป้อนข้อมูลและอักขระการขึ้นบรรทัดใหม่ลงในรายชื่อบุคลากรโดยใช้เมธอด append() ของคลาส JTextArea
ใช้เมธอด selectAll() เพื่อเลือกอักขระทั้งหมดในกล่องข้อความ
กำหนดฟังก์ชันที่จะดำเนินการเมื่อคลิกปุ่ม "แตกไฟล์" รับข้อความรายการบุคลากรผ่านเมธอด getText() ของคลาส JTextArea และจัดเก็บไว้ในสตริง
สร้างอาร์เรย์สตริงหนึ่งมิติ แยกสตริงก่อนหน้าตามอักขระขึ้นบรรทัดใหม่ และจัดเก็บไว้ในอาร์เรย์
สร้างดัชนีอาร์เรย์แบบสุ่มผ่าน Math.random() เป็นตัวห้อยอาร์เรย์ของผู้ชนะ
กำหนดข้อมูลที่ชนะรวมถึงพารามิเตอร์รูปแบบ
เพิ่มพารามิเตอร์บุคลากรให้กับข้อมูลที่ชนะผ่านเมธอด format() ของคลาส String
ใช้เมธอด setText() ของคลาส JTextArea เพื่อแสดงข้อมูลที่ชนะในช่องข้อความ
กำหนดฟังก์ชันที่จะดำเนินการเมื่อมีการคลิกปุ่ม "ออก" และใช้เมธอด System.exit(0) เพื่อออกจากโปรแกรม
รหัสมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ cn.edu.xidian.crytoll;
นำเข้า java.awt.BorderLayout;
นำเข้า java.awt.Color;
นำเข้า java.awt.EventQueue;
นำเข้า java.awt.event.ActionEvent;
นำเข้า java.awt.event.ActionListener;
นำเข้า java.awt.event.KeyAdapter;
นำเข้า java.awt.event.KeyEvent;
นำเข้า javax.swing.JButton;
นำเข้า javax.swing.JFrame;
นำเข้า javax.swing.JPanel;
นำเข้า javax.swing.JScrollPane;
นำเข้า javax.swing.JTextArea;
นำเข้า javax.swing.JTextField;
นำเข้า javax.swing.JLabel;
นำเข้า javax.swing.UIManager;
นำเข้า javax.swing.border.EmptyBorder;
นำเข้า javax.swing.border.TitledBorder;
ArrayExample ระดับสาธารณะ {
เฟรม JFrame ส่วนตัว
ฟิลด์ข้อความ JTextField ส่วนตัว;
JScrollPane scrollPane ส่วนตัว;
ฉลาก JLabel ส่วนตัว_1;
JTextArea textArea = JTextArea ใหม่ ();
JTextArea ส่วนตัว textArea_1;
-
* เปิดแอปพลิเคชัน
-
โมฆะคงที่สาธารณะ main (String [] args) {
EventQueue.inurgeLater (เรียกใช้ใหม่ () {
โมฆะสาธารณะวิ่ง () {
พยายาม {
หน้าต่าง ArrayExample = ใหม่ ArrayExample();
window.frame.setVisible (จริง);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
-
-
-
-
* สร้างแอปพลิเคชัน
-
ArrayExample สาธารณะ () {
เริ่มต้น();
-
-
* เริ่มต้นเนื้อหาของเฟรม
-
โมฆะส่วนตัวเริ่มต้น () {
frame = new JFrame("ใช้อาร์เรย์เพื่อสุ่มเลือกผู้ชมที่โชคดี");
frame.setBounds(100, 100, 500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
ป้ายกำกับ JLabel = JLabel ใหม่ ("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
label.setBounds(10, 10, 132, 15);
frame.getContentPane().add(ฉลาก);
textField = JTextField ใหม่ ();
textField.addKeyListener (KeyAdapter ใหม่ () {
@แทนที่
โมฆะสาธารณะ keyPressed (KeyEvent e) {
do_textField_keyPressed(e);
-
-
textField.setBounds(10, 35, 132, 21);
frame.getContentPane().add(textField);
textField.setColumns(10);
scrollPane = JScrollPane ใหม่ ();
scrollPane.setBounds(10, 66, 132, 185);
frame.getContentPane().add(scrollPane);
textArea_1 = JTextArea ใหม่ ();
scrollPane.setViewportView(textArea_1);
label_1 = JLabel ใหม่ ("/u9009/u53D6/u89C2/u4F17/u4EBA/u5458/uFF1A");
label_1.setBounds(180, 10, 132, 15);
frame.getContentPane().เพิ่ม(label_1);
textArea.setBounds(180, 34, 214, 217);
frame.getContentPane().add(textArea);
ปุ่ม JButton = JButton ใหม่ ("/u62BD/u53D6");
ปุ่ม addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
do_button_actionดำเนินการ(e);
-
-
ปุ่ม setBounds (404, 187, 70, 23);
frame.getContentPane().add(ปุ่ม);
JButton button_1 = ใหม่ JButton("/u9000/u51FA");
button_1.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
do_button_1_actionดำเนินการ(e);
-
-
button_1.setBounds(404, 228, 70, 23);
frame.getContentPane().เพิ่ม(button_1);
-
โมฆะที่ได้รับการป้องกัน do_textField_keyPressed (KeyEvent e) {
if (e.getKeyChar() != '/n')// หากไม่ใช่อักขระขึ้นบรรทัดใหม่ ก็จะไม่ถูกประมวลผล
กลับ;
ชื่อสตริง = textField.getText();
if (name.isEmpty())// หากไม่มีสตริงในกล่องข้อความ จะไม่มีการประมวลผลใด ๆ เกิดขึ้น
กลับ;
textArea_1.append(name + "/n");//เพิ่มชื่อที่ป้อนและอักขระขึ้นบรรทัดใหม่ลงในรายชื่อบุคคล
textField.selectAll();//เลือกอักขระทั้งหมดในกล่องข้อความ
-
โมฆะที่ได้รับการป้องกัน do_button_actionPerformed (ActionEvent e) {
String perstring = textArea_1.getText();//รับข้อความของรายชื่อบุคลากร
String[]บุคลากรArray = perstring.split("/n{1,}");//รับอาร์เรย์บุคลากร
int index = (int) (Math.random() *บุคลากรArray.length); // สร้างดัชนีอาร์เรย์แบบสุ่ม
//กำหนดข้อมูลที่ชนะรวมถึงพารามิเตอร์รูปแบบ
String formatArg = "ผู้ชมสำหรับการจับรางวัลนี้:/n/t%1$s/nขอแสดงความยินดีกับ %1$5s สำหรับการเป็นผู้ได้รับรางวัลใหญ่ของการจับรางวัลผู้ชมครั้งนี้"
+ "/n/nเราจะมอบโยเกิร์ตที่หมดอายุจำนวน %1$5s:/n/t20 กล่อง";
//เพิ่มพารามิเตอร์บุคลากรสำหรับข้อมูลที่ชนะ
ข้อมูลสตริง = String.format(formatArg,บุคลากรArray[ดัชนี]);
textArea.setText(info);//แสดงข้อมูลที่ชนะในพื้นที่ข้อความ
-
โมฆะที่ได้รับการป้องกัน do_button_1_actionPerformed (ActionEvent e) {
System.ออก(0);
-
-
เอฟเฟกต์ดังแสดงในรูป: