모든 시청자의 이름을 배열에 미리 입력하고, 전체 배열 요소 수를 구하고, 마지막으로 배열 요소에서 해당 요소의 첨자를 무작위로 추출하고, 이를 기반으로 행운의 시청자 이름을 구하는 프로그램을 작성하세요. 추출된 첨자.
아이디어는 다음과 같습니다.
입력 상자의 키 이벤트를 정의하고 KeyEvent 클래스의 getKeyChar() 함수를 사용하여 캐리지 리턴 문자인지 여부를 확인합니다. 그렇지 않으면 처리되지 않습니다.
isEmpty() 함수를 사용하여 텍스트 상자에 문자열이 있는지 확인합니다. 문자열이 없으면 처리가 수행되지 않습니다.
합법적인 입력인 경우 JTextArea 클래스의 append() 메서드를 통해 입력된 사람의 이름과 캐리지 리턴 문자를 인사 목록에 추가합니다.
텍스트 상자의 모든 문자를 선택하려면 selectAll() 메서드를 사용하십시오.
"Extract" 버튼을 클릭했을 때 실행될 함수를 정의하고, JTextArea 클래스의 getText() 메소드를 통해 인사 목록 텍스트를 얻어 문자열로 저장합니다.
1차원 문자열 배열을 만들고 캐리지 리턴 문자에 따라 이전 문자열을 분할하여 배열에 저장합니다.
승자의 배열 첨자로 Math.random()을 통해 무작위 배열 인덱스를 생성합니다.
형식 매개변수를 포함한 당첨 정보를 정의합니다.
String 클래스의 format() 메소드를 통해 당첨정보에 인사 매개변수를 추가합니다.
텍스트 필드에 당첨 정보를 표시하려면 JTextArea 클래스의 setText() 메소드를 사용하십시오.
"Exit" 버튼을 눌렀을 때 실행될 함수를 정의하고, System.exit(0) 메소드를 사용하여 프로그램을 종료합니다.
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
패키지 cn.edu.xidian.crytoll;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
공개 클래스 ArrayExample {
개인용 JFrame 프레임;
개인 JTextField 텍스트 필드;
개인 JScrollPane 스크롤Pane;
개인 JLabel label_1;
JTextArea textArea = new JTextArea();
개인 JTextArea textArea_1;
/**
* 응용 프로그램을 실행합니다.
*/
공개 정적 무효 메인(String[] args) {
EventQueue.invokeLater(새로운 Runnable() {
공개 무효 실행() {
노력하다 {
ArrayExample 창 = new ArrayExample();
window.frame.setVisible(true);
} 잡기(예외 e) {
e.printStackTrace();
}
}
});
}
/**
* 애플리케이션을 생성합니다.
*/
공개 ArrayExample() {
초기화();
}
/**
* 프레임의 내용을 초기화합니다.
*/
개인 무효 초기화() {
Frame = new JFrame("배열을 사용하여 행운의 시청자를 무작위로 선택합니다.");
프레임.setBounds(100, 100, 500, 300);
프레임.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
프레임.getContentPane().setLayout(null);
JLabel 라벨 = new JLabel("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
label.setBounds(10, 10, 132, 15);
프레임.getContentPane().add(레이블);
textField = 새로운 JTextField();
textField.addKeyListener(새 KeyAdapter() {
@보수
공개 무효 keyPressed(KeyEvent e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
프레임.getContentPane().add(textField);
textField.setColumns(10);
scrollPane = new JScrollPane();
scrollPane.setBounds(10, 66, 132, 185);
프레임.getContentPane().add(scrollPane);
textArea_1 = 새로운 JTextArea();
scrollPane.setViewportView(textArea_1);
label_1 = new JLabel("/u9009/u53D6/u89C2/u4F17/u4EBA/u5458/uFF1A");
label_1.setBounds(180, 10, 132, 15);
프레임.getContentPane().add(label_1);
textArea.setBounds(180, 34, 214, 217);
프레임.getContentPane().add(textArea);
JButton 버튼 = new JButton("/u62BD/u53D6");
버튼.addActionListener(새 ActionListener() {
공공 무효 actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
버튼.setBounds(404, 187, 70, 23);
프레임.getContentPane().add(버튼);
JButton 버튼_1 = new JButton("/u9000/u51FA");
버튼_1.addActionListener(새 ActionListener() {
공공 무효 actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
버튼_1.setBounds(404, 228, 70, 23);
프레임.getContentPane().add(button_1);
}
protected void do_textField_keyPressed(KeyEvent e) {
if (e.getKeyChar() != '/n')// 캐리지 리턴 문자가 아닌 경우 처리되지 않습니다.
반품;
문자열 이름 = textField.getText();
if (name.isEmpty())// 텍스트 상자에 문자열이 없으면 처리가 수행되지 않습니다.
반품;
textArea_1.append(name + "/n");//입력한 이름과 캐리지 리턴 문자를 사람 목록에 추가합니다.
textField.selectAll();//텍스트 상자의 모든 문자 선택
}
protected void do_button_actionPerformed(ActionEvent e) {
String perstring = textArea_1.getText();//인사 목록의 텍스트를 가져옵니다.
String[] personalArray = perstring.split("/n{1,}");//직원 배열 가져오기
int index = (int) (Math.random() * personalArray.length) // 무작위 배열 인덱스 생성
//형식 매개변수를 포함한 당첨정보 정의
String formatArg = "이 추첨의 청중:/n/t%1$s/n이 청중 추첨에서 대상이 된 %1$5s을(를) 축하합니다."
+ "/n/n%1$5s:/n/t유통기한이 지난 요구르트 20박스를 드립니다.";
//당첨 정보에 대한 인사 매개변수 추가
문자열 정보 = String.format(formatArg, personalArray[index]);
textArea.setText(info);//텍스트 영역에 당첨 정보 표시
}
protected void do_button_1_actionPerformed(ActionEvent e) {
시스템.exit(0);
}
}
효과는 그림과 같습니다.