2013年2月26日火曜日

どっかの大学の課題

課題を拾ってきて適当にやってみた。
こういうのって結構、教授とか調べてると思うんだけど。。。
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 件のコメント:

コメントを投稿