こういうのって結構、教授とか調べてると思うんだけど。。。
http://oshiete.goo.ne.jp/qa/7965391.html
魚拓
http://megalodon.jp/2013-0226-1945-34/oshiete.goo.ne.jp/qa/7965391.html
切れててか題名がわからないけど、たぶん「3桁のクジ引きプログラム」かな?
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
//@author aki
//2013 - 02 - 26
//抽選アプリケーション
//仕様
//・「抽選」ボタンを出すたびに0~999までの間の数値をランダムで画面に出力する。
//・「3つの数値」「抽選」ボタンは画面中央へ「リセット」ボタンはなるべく端へ設置する。
public class Kadai001 extends JFrame {
private JLabel numLabel[];
private JButton cyusenB;
private JButton resetB;
private int[] numbox;
//constructor
public Kadai001() {
super("抽選");//親クラスのコンストラクタ
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 400);
//仕様内容から出題者の意図を理解したところ、
//Layoutの課題だと予測され、Layoutを多用したほうがいいと思われる。
setLayout(new BorderLayout());
JPanel content = (JPanel) getContentPane();
JPanel center = new JPanel(new FlowLayout());
content.add("Center", center);
JPanel south = new JPanel(new BorderLayout());
content.add("South", south);
//variable
Font font = new Font(Font.SANS_SERIF, Font.BOLD, 150);
numLabel = new JLabel[3];
for (int i = 0; i < 3; i++) {
numLabel[i] = new JLabel(Integer.toString(i));
numLabel[i].setFont(font);
center.add(numLabel[i]);
}
cyusenB = new JButton("抽選");
center.add("South", cyusenB);
resetB = new JButton("Reset");
south.add("West", resetB);
//listener
cyusenB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
Random rnd = new Random();
for (int i = 0; i < 3; i++) {
makeNumBox(i);
numLabel[i].setText(Integer.toString(numbox[rnd.nextInt(100)]));
}
}
});
resetB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
for (int i = 0; i < 3; i++)
numLabel[i].setText(Integer.toString(i + 1));
}
});
}
//遊び心
private void makeNumBox(int count) {
numbox = new int[100];
int num1 = -1, num2 = -1;
if (count == 1) {
num1 = Integer.parseInt(numLabel[0].getText());
} else if (count == 2) {
num1 = Integer.parseInt(numLabel[0].getText());
num2 = Integer.parseInt(numLabel[1].getText());
} else {
for (int i = 0; i < 100; i++) {
numbox[i] = i / 10;
}
return;
}
Random rnd = new Random();
//1回目,2回目に出た数字を出にくくする
for (int i = 0, num = 0; i < 100; i++) {
if (i / 10 == num1) {
if (i - (i / 10) * 10 == 0) {
num = i / 10;
} else {
num = rnd.nextInt(10);
}
} else if (i / 10 == num2) {
if (i - (i / 10) * 10 == 0) {
num = i / 10;
} else {
num = rnd.nextInt(10);
}
} else {
num = i / 10;
}
numbox[i] = num;
}
}
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
new Kadai001().setVisible(true);
}
}