こういうのって結構、教授とか調べてると思うんだけど。。。
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); } }
0 件のコメント:
コメントを投稿