雙色球隨機選號Java代碼

[color=blue]package lyt;
import java.awt.*;
import java.awt.event.*;

public class MainFrame extends Frame {

private Button bt_ok,bt_out,bt_delete;

private TextField[] tf = new TextField[3];

public TextArea ta1;

private Label area_title_label,digit_label,number_count;

private Choice c1;

private DataInput di;


private static final long serialVersionUID = 1L;

public static void main(String[] args) {
new MainFrame().launchFrame();
}

public void launchFrame() {
this.setSize(500, 500);
this.setLocation(300, 50);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
});

//將文本域添加到p1當中
area_title_label = new Label("下面是隨機產生的雙色球,最後一位爲藍球");
//area_title_label.setSize(50, 50);
ta1 = new TextArea(27,8);
Panel p1 = new Panel();
p1.setLayout(new BorderLayout());
p1.add(area_title_label,BorderLayout.NORTH);
p1.add(ta1,BorderLayout.SOUTH);

//將選擇列表和文本框及各個按鈕添加到p2當中,其中P2也包含了一個Panel
c1 = new Choice();
c1.add(" ");
c1.add("第1位");
c1.add("第2位");
c1.add("第3位");
c1.add("第4位");
c1.add("第5位");
c1.add("第6位");
c1.add("第7位");
digit_label = new Label("選擇位數:");
//通過循環的方法產生文本輸入框
for(int i=0; i<tf.length; i++) {
tf[i] = new TextField();
tf[i].setColumns(2);
}

bt_ok = new Button("確定");
//爲確定按鈕添加事件監聽程序!
bt_ok.addActionListener(new bt_Action());
bt_delete = new Button("刪除");
bt_out = new Button("保存");
Panel p2_1 = new Panel();
p2_1.add(c1);

for(int i=0; i<tf.length; i++) {
p2_1.add(tf[i]);
}
//程序左邊的面板
Panel p2 = new Panel();
p2.add(digit_label);
p2.add(p2_1);
p2.add(bt_ok);
p2.add(bt_delete);
p2.add(bt_out);
//p2.add(number_count);

//將p1,p2添加到主面板當中並用網格進行排列
Panel top_p = new Panel();
top_p.setLayout(new GridLayout(1,2));
top_p.add(p1);
top_p.add(p2);
this.add(top_p);
this.setVisible(true);


di = new DataInput();
}

public class bt_Action implements ActionListener {

public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("確定")) {
di.getInputInt(c1, tf); //將所選擇的下拉列表項,及文本輸入框傳入到數據產生類當中
ta1.append(di.outInt()+ "\n");//將數據產生類所產生的數據追加到文本域當中並換行
}
}

}

}


package lyt;
import java.awt.Choice;
import java.awt.TextArea;
import java.awt.TextField;
import java.util.Arrays;
import java.util.Random;

public class DataInput {
private MainFrame mf ;
Random r = new Random();
private int[] number_red;
private int[] number_blue ;
private int red_number;
private int blue_number;
private int[] containRedNumber;
private TextArea ta1;
private Choice c1;
private TextField[] tf;
private int tf1_number;
private int tf2_number;
private int tf3_number;
private int[] tf_sum_number;


//得到藍色球號碼,藍色球號碼的範圍爲1-16
public int getBlueNumber() {
number_blue = new int[16];

for(int i=0; i<number_blue.length; i++) {
number_blue[i] = ++i;
}


blue_number = r.nextInt(number_blue.length) + 1; //隨機得到號碼,爲防止出現0及不出現16,將結果再加1

return blue_number;

}

//得到紅色球號碼,紅色球號碼的範圍爲1-32
public int getRedNumber() {
number_red = new int[32];

for(int i=0; i<number_red.length; i++) {
number_red[i] = ++i;
}

return red_number = r.nextInt(number_red.length) + 1;//隨機得到號碼,爲防止出現0及不出現32,將結果再加1
}

//從輸入的數據當中隨機取得一個數字,目的是讓輸入的三個數據隨機出現
public int getInputNumber() {
int i = r.nextInt(tf_sum_number.length);
return tf_sum_number[i];
}

//判斷產生的數字是否會與前面已產生的數字重複,此處通過將以產生的數字放入到一個數組裏,然後再將後面產生的數字與數組中的數字進行對比
public boolean isContainRedNumber(int red_number) {

for(int i=0; i<containRedNumber.length; i++) {
if(containRedNumber[i] == red_number) {
return true;
}
}
return false;
}

//通過調用獲得號碼的方法來產生數字,並進行重複的判斷,將最後產生的號碼返回
public String outInt() {
containRedNumber = new int[7];
int number1;
int number2;
int number3;
int number4;
int number5;
int number6;
int number7;

//第一個數字不需要進行重複判斷,只需將產生的數字放入到用於判斷重複的數組當中
if(c1.getSelectedItem().equals("第1位")) { //此處的if語句是爲了判斷是否選擇了下拉列表,如果選擇了則所選擇的下拉列表項中的位數
number1 = this.getInputNumber(); //就應該是從所輸入的三個數據當中隨機產生,而不是從其它的隨機方法中產生。以下相同
containRedNumber[0] = number1;
}else {
number1 = this.getRedNumber();
containRedNumber[0] = number1;
}

//將產生的第二個數字進行重複判斷,如果爲重複則重新產生一個數字,再進行判斷!如果不重複則放入到數組當中,以備後續的數字進行重複判斷
if(c1.getSelectedItem().equals("第2位")) {
number2 = this.getInputNumber();
if(this.isContainRedNumber(number2)) {
number2 = this.getRedNumber();
}
containRedNumber[1] = number2;
}else {
number2 = this.getRedNumber();
if(this.isContainRedNumber(number2)) {
number2 = this.getRedNumber();
}
containRedNumber[1] = number2;
}

//第3個數字與第二個數字類似
if(c1.getSelectedItem().equals("第3位")) {
number3 = this.getInputNumber();
if(this.isContainRedNumber(number3)) {
number3 = this.getRedNumber();
}
containRedNumber[2] = number3;
}else {
number3 = this.getRedNumber();
if(this.isContainRedNumber(number3)) {
number3 = this.getRedNumber();
}
containRedNumber[2] = number3;
}

//第4個數字與第二個數字類似
if(c1.getSelectedItem().equals("第4位")) {
number4 = this.getInputNumber();
if(this.isContainRedNumber(number4)) {
number4 = this.getRedNumber();
}
containRedNumber[3] = number4;
}else {
number4 = this.getRedNumber();
if(this.isContainRedNumber(number4)) {
number4 = this.getRedNumber();
}
containRedNumber[3] = number4;
}

//第5個數字與第二個數字類似
if(c1.getSelectedItem().equals("第5位")) {
number5 = this.getInputNumber();
if(this.isContainRedNumber(number5)) {
number5 = this.getRedNumber();
}
containRedNumber[4] = number5;
}else {
number5 = this.getRedNumber();
if(this.isContainRedNumber(number5)) {
number5 = this.getRedNumber();
}
containRedNumber[4] = number5;
}

//第6個數字與第二個數字類似
if(c1.getSelectedItem().equals("第6位")) {
number6 = this.getInputNumber();
if(this.isContainRedNumber(number6)) {
number6 = this.getRedNumber();
}
containRedNumber[5] = number6;
}else {
number6 = this.getRedNumber();
if(this.isContainRedNumber(number6)) {
number6 = this.getRedNumber();
}
containRedNumber[5] = number6;
}

//第7個數字爲藍球,不需要判斷是否重複
if(c1.getSelectedItem().equals("第7位")) {
number7 = this.getInputNumber();
}else {
number7 = this.getBlueNumber();
}

//將結果打印輸出
int[] sum_number = {number1,number2,number3,number4,number5,number6,number7};
String[] sum_string = new String[7];
String s = new String() ;

for(int i=0; i<sum_number.length; i++) {
if(sum_number[i]<10) { //如果產生的數字小於10,則在前面加上0,將結果轉換爲字符串存入字符串數組當中
String s1 = String.valueOf(sum_number[i]);
sum_string[i] = "0" + s1;
}else {
sum_string[i] ="" + sum_number[i];
}
//通過判斷位數的不同使用不同的分割符,將結果連成一條字符串如:"1, 2, 3, 4, 5, 6: 7"
if(i==6) {
s+=sum_string[i];
}else if (i==5) {
s+= sum_string[i] + ":";
}else {
s+= sum_string[i] + ",";
}

}
return s;

}


//從窗口中獲得輸入的數據,進行處理
public void getInputInt(Choice c1,TextField[] tf) {
this.c1 = c1;
this.tf = tf;
tf_sum_number = new int[tf.length];
int index = 0;

//獲得文本框輸入的數據
for(int i=0; i<tf.length; i++) {
//通過判斷輸入框的內容不等於空來判斷是否輸入了數據
if(tf[i].getText() !=null && !tf[i].getText().equals("")) {
tf_sum_number[index] = Integer.parseInt(tf[i].getText());
index++;
}
}
}
}[/color]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章