事前に視聴者全員の名前を配列に入力し、配列の要素の総数を取得し、最後に配列要素からランダムに要素の添字を抽出して、その結果をもとに幸運な視聴者の名前を取得するプログラムを書いてください。抽出された添え字。
考え方は次のとおりです。
入力ボックスのキー イベントを定義し、KeyEvent クラスの getKeyChar() 関数を使用して、それが復帰文字であるかどうかを判断します。そうでない場合は処理されません。
isEmpty() 関数を使用して、テキスト ボックスに文字列があるかどうかを確認します。文字列がない場合は、処理は実行されません。
正当な入力である場合は、JTextArea クラスの append() メソッドを使用して、入力された個人の名前と改行文字を個人リストに追加します。
テキスト ボックス内のすべての文字を選択するには、selectAll() メソッドを使用します。
「抽出」ボタンをクリックしたときに実行する関数を定義し、JTextAreaクラスのgetText()メソッドで人事名簿のテキストを取得し、文字列に格納します。
1 次元の文字列配列を作成し、復帰文字に従って前の文字列を分割して配列に格納します。
Math.random() を通じて勝者の配列添字としてランダムな配列インデックスを生成します。
フォーマットパラメータを含む当選情報を定義します。
String クラスの format() メソッドを通じて、人事パラメータを当選情報に追加します。
JTextArea クラスの setText() メソッドを使用して、テキスト フィールドに当選情報を表示します。
「終了」ボタンをクリックしたときに実行する関数を定義し、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 スクロールペイン;
プライベート JLabel label_1;
JTextArea textArea = new JTextArea();
プライベート JTextArea textArea_1;
/**
* アプリケーションを起動します。
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
試す {
ArrayExample ウィンドウ = new ArrayExample();
window.frame.setVisible(true);
} catch (例外 e) {
e.printStackTrace();
}
}
});
}
/**
* アプリケーションを作成します。
*/
public ArrayExample() {
初期化();
}
/**
※フレームの内容を初期化します。
*/
プライベート void 初期化() {
Frame = new JFrame("配列を使用して幸運な視聴者をランダムに選択します");
フレーム.setBounds(100, 100, 500, 300);
Frame.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(new KeyAdapter() {
@オーバーライド
public void keyPressed(KeyEvent e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
フレーム.getContentPane().add(textField);
textField.setColumns(10);
スクロールペイン = 新しい JScrollPane();
スクロールペイン.setBounds(10, 66, 132, 185);
フレーム.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);
フレーム.getContentPane().add(label_1);
textArea.setBounds(180, 34, 214, 217);
フレーム.getContentPane().add(textArea);
JButton ボタン = new JButton("/u62BD/u53D6");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
button.setBounds(404, 187, 70, 23);
フレーム.getContentPane().add(ボタン);
JButton button_1 = 新しい JButton("/u9000/u51FA");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
button_1.setBounds(404, 228, 70, 23);
Frame.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[] personArray = perstring.split("/n{1,}");//人事配列を取得します
int Index = (int) (Math.random() * personArray.length) // ランダムな配列インデックスを生成します。
//フォーマットパラメータを含む当選情報を定義する
String formatArg = "この抽選の視聴者メンバー:/n/t%1$s/nこの視聴者抽選のグランプリ受賞者となった %1$5s さん、おめでとうございます。"
+ "/n/n期限切れヨーグルト %1$5s:/n/t20 箱をプレゼントします。";
//当選情報の人事パラメータを追加
文字列情報 = String.format(formatArg, personArray[index]);
textArea.setText(info);//当選情報をテキストエリアに表示
}
protected void do_button_1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
効果は次の図に示すとおりです。