?? chooseaward.java
字號(hào):
reader = new BufferedReader(new FileReader(f));
//循環(huán)讀取
while (true)
{
//讀取一個(gè)文本行
String data = reader.readLine();
System.out.println(data);//開發(fā)時(shí)候測(cè)試用
// 讀完了數(shù)據(jù)
if (data == null)
{
l_information.setText("數(shù)據(jù)加載完成!");
break;
}
//通過“*”這個(gè)符號(hào)將 字符串分離為兩部分,再存放到向量里面
Vector v = this.apart(data, "*");
//System.out.println(data);//開發(fā)時(shí)候測(cè)試用
if (v == null)
{
l_information.setText("數(shù)據(jù)格式不正確,請(qǐng)重新加載!");
return;
}
/*
* 分別將分離開來(lái)的手機(jī)號(hào)碼,和姓名分別放入兩個(gè)可變向量當(dāng)中
* 這里應(yīng)該使用泛型,由于本人還沒有熟練掌握泛型,姑且放之
*
*
* 捕獲異常,看是否出現(xiàn)了格式錯(cuò)誤,因?yàn)橐话愠霈F(xiàn)了格式錯(cuò)誤
* 這兩條語(yǔ)句都會(huì)發(fā)生無(wú)法取得元素的錯(cuò)誤
*/
try
{
z_identNumber.add(k, v.elementAt(0));
z_name.add(k, v.elementAt(1));
k++;
}
catch(Exception e4)
{
System.out.println("格式中沒有分隔符號(hào)出現(xiàn)的錯(cuò)誤");
//JOptionPane.showMessageDialog(this, "導(dǎo)入的數(shù)據(jù)格式錯(cuò)誤!");
l_information.setText("導(dǎo)入的數(shù)據(jù)格式錯(cuò)誤!");
break;
}
}
} catch (Exception ex)
{
ex.printStackTrace(); // 輸出出錯(cuò)信息
}
}
String a=(String)z_name.lastElement();
level=new Integer(a); //設(shè)定LEVEL的取值
if(level<1||level>10)
level=5;
z_identNumber.remove(z_identNumber.lastElement()); //將最后一個(gè)去掉
System.out.println("level"+level+z_identNumber.lastElement());
}
/*
* 啟動(dòng)按鈕的事件
*/
public void b_start_ActionPerformed(ActionEvent e)
{
//判斷存儲(chǔ)兩個(gè)標(biāo)記的向量中是否為空
if (v_identNumber.size() <= 0 || v_name.size() <= 0)
{
l_information.setText("數(shù)據(jù)沒有加載,請(qǐng)加載數(shù)據(jù)!");
}
else
{
if (chooseTime > 6)
{
l_information.setText("抽獎(jiǎng)結(jié)束,若要再進(jìn)行一次須重新啟動(dòng)程序!");
b_start.setEnabled(false);
b_stop.setEnabled(false);
}
else//執(zhí)行....
{
awardThread = new ChooseThread(this);
awardThread.changeflag_start();
l_information.setText("將產(chǎn)生:特(1名),一(1名),二(2名),三(3名)等獎(jiǎng)");
l_identNumber.setText("選取中...");
b_start.setEnabled(false);
b_stop.setEnabled(true);
}
}
}
/*
* 暫停按鈕的事件
*/
public void b_stop_ActionPerformed(ActionEvent e)
{
//將跳轉(zhuǎn)的數(shù)字置于停止?fàn)顟B(tài)
awardThread.changeflag_stop();
String awardmessage = "";
chooseTime++;//第幾次按停止按鈕
String str_name = "";
String message="";
if(chooseTime>6&&level>=10)
{
t_identNumber.setText((String)z_identNumber.elementAt(0));
}
/*
* 根據(jù)第幾次來(lái)按停止按鈕來(lái)決定是產(chǎn)生幾等獎(jiǎng)
*/
switch (chooseTime)
{
case 1:
case 2:
case 3://按前三次都是產(chǎn)生三等獎(jiǎng)
//尋找停止在號(hào)碼框中的數(shù)字,是對(duì)應(yīng)的的存放號(hào)碼的向量中的第幾個(gè)
for (int k = 0; k < v_identNumber.size(); k++)
{
//找到了對(duì)應(yīng)的號(hào)碼
if ((t_identNumber.getText()).equals(v_identNumber.elementAt(k)))
{
//取出這個(gè)號(hào)碼對(duì)應(yīng)的名字
str_name = (String) v_name.elementAt(k);
//為防止下次抽的時(shí)候再抽到相同的號(hào)碼,所以把它們從向量中移除掉
v_identNumber.removeElementAt(k);
v_name.removeElementAt(k);
z_identNumber.removeElement(t_identNumber.getText());
//z_name.removeElement(t_identNumber.getText());
//z_name.removeElementAt(z_identNumber.indexOf(t_identNumber.getText()));
break;//跳出循環(huán)
}
}
l_identNumber.setText("三等獎(jiǎng)");
b_start.setText("繼續(xù)");
//這是要輸出到文本文件的信息
awardmessage = "三等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";
//將要打印的文本信息先存放到一個(gè)可變向量中
v_printident.addElement(awardmessage);//系統(tǒng)提示說要使用泛型,本人不會(huì)用,以后再研究
message = "第"+chooseTime+"位三等獎(jiǎng)得主為: "+str_name;
JOptionPane.showMessageDialog(this, message);
break;
case 4:
case 5:
for (int k = 0; k < v_identNumber.size(); k++)
{
if (t_identNumber.getText().equals(v_identNumber.elementAt(k)))
{
str_name = (String) v_name.elementAt(k);
v_identNumber.removeElementAt(k);
v_name.removeElementAt(k);
z_identNumber.removeElement(t_identNumber.getText());
//z_name.removeElement(t_identNumber.getText());
//z_name.removeElementAt(z_identNumber.indexOf(t_identNumber.getText()));
break;
}
}
l_identNumber.setText("二等獎(jiǎng)");
awardmessage = "二等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";
v_printident.addElement(awardmessage);
int serial=chooseTime-3;//第幾位得主,排名序號(hào)
message = "第"+serial+"位二等獎(jiǎng)得主為: "+str_name;
JOptionPane.showMessageDialog(ChooseAward.this, message);
break;
case 6:
for(int k=0;k<v_identNumber.size();k++)
{
if(t_identNumber.getText().equals(v_identNumber.elementAt(k)))
{
str_name=(String) v_name.elementAt(k);
v_identNumber.removeElementAt(k);
v_name.removeElementAt(k);
z_identNumber.removeElement(t_identNumber.getText());
//z_name.removeElementAt(z_identNumber.indexOf(t_identNumber.getText()));
break;
}
}
l_identNumber.setText("一等獎(jiǎng)");
awardmessage = "一等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";
v_printident.addElement(awardmessage);
/*
* 第幾位得主,排名序號(hào),其實(shí)沒必要這樣寫,因?yàn)楸緛?lái)就這一名
* 現(xiàn)在這樣寫的作用是為我以后改進(jìn)這個(gè)程序(可以自主選擇產(chǎn)生幾名得獎(jiǎng)主)
* 的時(shí)候做好準(zhǔn)備
*/
//serial=chooseTime-5;
//message = "第"+serial+"位二等獎(jiǎng)得主為: "+str_name;
message = "一等獎(jiǎng)得主為: "+str_name;
JOptionPane.showMessageDialog(ChooseAward.this, message);
break;
case 7:
for (int k = 0; k < v_identNumber.size(); k++)
{
if (t_identNumber.getText().equals(v_identNumber.elementAt(k)))
{
str_name = (String) v_name.elementAt(k);
v_identNumber.removeElementAt(k);
v_name.removeElementAt(k);
z_identNumber.removeElement(t_identNumber.getText());
//z_name.removeElement(t_identNumber.getText());
//z_name.removeElementAt(z_identNumber.indexOf(t_identNumber.getText()));
break;
}
}
l_identNumber.setText("特等獎(jiǎng)");
awardmessage = "特等獎(jiǎng)" + t_identNumber.getText() + str_name + "\r\n";
v_printident.addElement(awardmessage);
message = "特等獎(jiǎng)得主為: "+str_name;
JOptionPane.showMessageDialog(ChooseAward.this, message);
l_information.setText("此次抽獎(jiǎng)全部結(jié)束,保存抽獎(jiǎng)結(jié)果!");
break;
default:
JOptionPane.showMessageDialog(ChooseAward.this, "抽獎(jiǎng)已經(jīng)結(jié)束");
b_start.setText("開始");
awardThread.changeflag_stop();
break;
}
b_start.setEnabled(true);
b_stop.setEnabled(false);
}
/*
* 輸出按鈕的事件
*/
public void b_printaward_ActionPerformed(ActionEvent e)
{
try
{
FileOutputStream fs_out = new FileOutputStream("result.txt");
DataOutputStream out = new DataOutputStream(fs_out);
for (int i = 0; i < v_printident.size(); i++)
{
System.out.println(v_printident.elementAt(i));//測(cè)試用
out.writeUTF((String) v_printident.elementAt(i) + "\r\n");
}
out.close();
l_information.setText("文件輸出成功!保存在當(dāng)前目錄下..");
} catch (FileNotFoundException fe)
{
System.err.println(fe);
} catch (IOException ioe)
{
System.err.println(ioe);
}
}
/*
* 定義一個(gè)方法,將號(hào)碼和名字分離開來(lái)
*/
//一個(gè)是源數(shù)據(jù)文件,一個(gè)是分隔符號(hào)
public Vector apart(String src, String separator)
{
//使用了泛型,用可變向量來(lái)存放等到的標(biāo)記
Vector<String> v = new Vector<String>();
/*
* string tokenizer 類允許應(yīng)用程序?qū)⒆址纸鉃闃?biāo)記,祥見api文檔
*/
//src是源字符串,separator是把src分隔為幾段的標(biāo)記
StringTokenizer st = new StringTokenizer(src, separator);
//測(cè)試此 tokenizer 的字符串中是否還有更多的可用標(biāo)記
while (st.hasMoreTokens())
{
//返回此 string tokenizer 的下一個(gè)標(biāo)記,并將它加入到可變向量中存放
v.addElement(st.nextToken());
}
return v;//返回向量
}
/*
* 程序的入口
*/
public static void main(String[] args)
{
//根據(jù)經(jīng)驗(yàn),這條語(yǔ)句只能在第一行
JFrame.setDefaultLookAndFeelDecorated(true);
ChooseAward award = new ChooseAward();
award.setSize(333, 209);
award.setLocationRelativeTo(null);//居中顯示
award.setVisible(true);
award.setAlwaysOnTop(true);//置頂
award.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -