表1. CheckerDrag.java
十余年的臨武網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整臨武建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“臨武網(wǎng)站設(shè)計(jì)”,“臨武網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
// CheckerDrag.javaimport java.awt.*;import java.awt.event.*;public class CheckerDrag extends java.applet.Applet{ // Dimension of checkerboard square. // 棋盤上每個(gè)小方格的尺寸 final static int SQUAREDIM = 40; // Dimension of checkerboard -- includes black outline. // 棋盤的尺寸 – 包括黑色的輪廓線 final static int BOARDDIM = 8 * SQUAREDIM + 2; // Dimension of checker -- 3/4 the dimension of a square. // 棋子的尺寸 – 方格尺寸的3/4 final static int CHECKERDIM = 3 * SQUAREDIM / 4; // Square colors are dark green or white. // 方格的顏色為深綠色或者白色 final static Color darkGreen = new Color (0, 128, 0); // Dragging flag -- set to true when user presses mouse button over checker // and cleared to false when user releases mouse button. // 拖動(dòng)標(biāo)記 --當(dāng)用戶在棋子上按下鼠標(biāo)按鍵時(shí)設(shè)為true, // 釋放鼠標(biāo)按鍵時(shí)設(shè)為false boolean inDrag = false; // Left coordinate of checkerboard's upper-left corner. // 棋盤左上角的左方向坐標(biāo) int boardx; // Top coordinate of checkerboard's upper-left corner. //棋盤左上角的上方向坐標(biāo) int boardy; // Left coordinate of checker rectangle origin (upper-left corner). // 棋子矩形原點(diǎn)(左上角)的左方向坐標(biāo) int ox; // Top coordinate of checker rectangle origin (upper-left corner). // 棋子矩形原點(diǎn)(左上角)的上方向坐標(biāo) int oy; // Left displacement between mouse coordinates at time of press and checker // rectangle origin. // 在按鍵時(shí)的鼠標(biāo)坐標(biāo)與棋子矩形原點(diǎn)之間的左方向位移 int relx; // Top displacement between mouse coordinates at time of press and checker // rectangle origin. // 在按鍵時(shí)的鼠標(biāo)坐標(biāo)與棋子矩形原點(diǎn)之間的上方向位移 int rely; // Width of applet drawing area. // applet繪圖區(qū)域的寬度 int width; // Height of applet drawing area. // applet繪圖區(qū)域的高度 int height; // Image buffer. // 圖像緩沖 Image imBuffer; // Graphics context associated with image buffer. // 圖像緩沖相關(guān)聯(lián)的圖形背景 Graphics imG; public void init () { // Obtain the size of the applet's drawing area. // 獲取applet繪圖區(qū)域的尺寸 width = getSize ().width; height = getSize ().height; // Create image buffer. // 創(chuàng)建圖像緩沖 imBuffer = createImage (width, height); // Retrieve graphics context associated with image buffer. // 取出圖像緩沖相關(guān)聯(lián)的圖形背景 imG = imBuffer.getGraphics (); // Initialize checkerboard's origin, so that board is centered. // 初始化棋盤的原點(diǎn),使棋盤在屏幕上居中 boardx = (width - BOARDDIM) / 2 + 1; boardy = (height - BOARDDIM) / 2 + 1; // Initialize checker's rectangle's starting origin so that checker is // centered in the square located in the top row and second column from // the left. // 初始化棋子矩形的起始原點(diǎn),使得棋子在第一行左數(shù)第二列的方格里居中 ox = boardx + SQUAREDIM + (SQUAREDIM - CHECKERDIM) / 2 + 1; oy = boardy + (SQUAREDIM - CHECKERDIM) / 2 + 1; // Attach a mouse listener to the applet. That listener listens for // mouse-button press and mouse-button release events. // 向applet添加一個(gè)用來監(jiān)聽鼠標(biāo)按鍵的按下和釋放事件的鼠標(biāo)監(jiān)聽器 addMouseListener (new MouseAdapter () { public void mousePressed (MouseEvent e) { // Obtain mouse coordinates at time of press. // 獲取按鍵時(shí)的鼠標(biāo)坐標(biāo) int x = e.getX (); int y = e.getY (); // If mouse is over draggable checker at time // of press (i.e., contains (x, y) returns // true), save distance between current mouse // coordinates and draggable checker origin // (which will always be positive) and set drag // flag to true (to indicate drag in progress). // 在按鍵時(shí)如果鼠標(biāo)位于可拖動(dòng)的棋子上方 // (也就是contains (x, y)返回true),則保存當(dāng)前 // 鼠標(biāo)坐標(biāo)與棋子的原點(diǎn)之間的距離(始終為正值)并且 // 將拖動(dòng)標(biāo)志設(shè)為true(用來表明正處在拖動(dòng)過程中) if (contains (x, y)) { relx = x - ox; rely = y - oy; inDrag = true; } } boolean contains (int x, int y) { // Calculate center of draggable checker. // 計(jì)算棋子的中心位置 int cox = ox + CHECKERDIM / 2; int coy = oy + CHECKERDIM / 2; // Return true if (x, y) locates with bounds // of draggable checker. CHECKERDIM / 2 is the // radius. // 如果(x, y)仍處于棋子范圍內(nèi)則返回true // CHECKERDIM / 2為半徑 return (cox - x) * (cox - x) + (coy - y) * (coy - y) CHECKERDIM / 2 * CHECKERDIM / 2; } public void mouseReleased (MouseEvent e) { // When mouse is released, clear inDrag (to // indicate no drag in progress) if inDrag is // already set. // 當(dāng)鼠標(biāo)按鍵被釋放時(shí),如果inDrag已經(jīng)為true, // 則將其置為false(用來表明不在拖動(dòng)過程中) if (inDrag) inDrag = false; } }); // Attach a mouse motion listener to the applet. That listener listens // for mouse drag events. //向applet添加一個(gè)用來監(jiān)聽鼠標(biāo)拖動(dòng)事件的鼠標(biāo)運(yùn)動(dòng)監(jiān)聽器 addMouseMotionListener (new MouseMotionAdapter () { public void mouseDragged (MouseEvent e) { if (inDrag) { // Calculate draggable checker's new // origin (the upper-left corner of // the checker rectangle). // 計(jì)算棋子新的原點(diǎn)(棋子矩形的左上角) int tmpox = e.getX () - relx; int tmpoy = e.getY () - rely; // If the checker is not being moved // (at least partly) off board, // assign the previously calculated // origin (tmpox, tmpoy) as the // permanent origin (ox, oy), and // redraw the display area (with the // draggable checker at the new // coordinates). // 如果棋子(至少是棋子的一部分)沒有被 // 移出棋盤,則將之前計(jì)算的原點(diǎn) // (tmpox, tmpoy)賦值給永久性的原點(diǎn)(ox, oy), // 并且刷新顯示區(qū)域(此時(shí)的棋子已經(jīng)位于新坐標(biāo)上) if (tmpox boardx tmpoy boardy tmpox + CHECKERDIM boardx + BOARDDIM tmpoy + CHECKERDIM boardy + BOARDDIM) { ox = tmpox; oy = tmpoy; repaint (); } } } }); } public void paint (Graphics g) { // Paint the checkerboard over which the checker will be dragged. // 在棋子將要被拖動(dòng)的位置上繪制棋盤 paintCheckerBoard (imG, boardx, boardy); // Paint the checker that will be dragged. // 繪制即將被拖動(dòng)的棋子 paintChecker (imG, ox, oy); // Draw contents of image buffer. // 繪制圖像緩沖的內(nèi)容 g.drawImage (imBuffer, 0, 0, this); } void paintChecker (Graphics g, int x, int y) { // Set checker shadow color. // 設(shè)置棋子陰影的顏色 g.setColor (Color.black); // Paint checker shadow. // 繪制棋子的陰影 g.fillOval (x, y, CHECKERDIM, CHECKERDIM); // Set checker color. // 設(shè)置棋子顏色 g.setColor (Color.red); // Paint checker. // 繪制棋子 g.fillOval (x, y, CHECKERDIM - CHECKERDIM / 13, CHECKERDIM - CHECKERDIM / 13); } void paintCheckerBoard (Graphics g, int x, int y) { // Paint checkerboard outline. // 繪制棋盤輪廓線 g.setColor (Color.black); g.drawRect (x, y, 8 * SQUAREDIM + 1, 8 * SQUAREDIM + 1); // Paint checkerboard. // 繪制棋盤 for (int row = 0; row 8; row++) { g.setColor (((row 1) != 0) ? darkGreen : Color.white); for (int col = 0; col 8; col++) { g.fillRect (x + 1 + col * SQUAREDIM, y + 1 + row * SQUAREDIM, SQUAREDIM, SQUAREDIM); g.setColor ((g.getColor () == darkGreen) ? Color.white : darkGreen); } } } // The AWT invokes the update() method in response to the repaint() method // calls that are made as a checker is dragged. The default implementation // of this method, which is inherited from the Container class, clears the // applet's drawing area to the background color prior to calling paint(). // This clearing followed by drawing causes flicker. CheckerDrag overrides // update() to prevent the background from being cleared, which eliminates // the flicker. // AWT調(diào)用了update()方法來響應(yīng)拖動(dòng)棋子時(shí)所調(diào)用的repaint()方法。該方法從 // Container類繼承的默認(rèn)實(shí)現(xiàn)會(huì)在調(diào)用paint()之前,將applet的繪圖區(qū)域清除 // 為背景色,這種繪制之后的清除就導(dǎo)致了閃爍。CheckerDrag重寫了update()來 // 防止背景被清除,從而消除了閃爍。 public void update (Graphics g) { paint (g); }}
為了幫助網(wǎng)友解決“如何設(shè)計(jì)一個(gè)可以電腦隨機(jī)抽獎(jiǎng)程序?”相關(guān)的問題,中國(guó)學(xué)網(wǎng)通過互聯(lián)網(wǎng)對(duì)“如何設(shè)計(jì)一個(gè)可以電腦隨機(jī)抽獎(jiǎng)程序?”相關(guān)的解決方案進(jìn)行了整理,用戶詳細(xì)問題包括:RT,我想知道:如何設(shè)計(jì)一個(gè)可以電腦隨機(jī)抽獎(jiǎng)程序?,具體解決方案如下:
解決方案1:
如果你是對(duì)編程一竅不通,又想快速學(xué)會(huì)做小程序的話,建議學(xué)flash+as3。因?yàn)閒lash本來就是動(dòng)畫軟件,有簡(jiǎn)單易懂的界面繪制系統(tǒng),不像java之類的語言需要用代碼來解決界面問題。相對(duì)來說,初學(xué)者要做小程序,學(xué)這個(gè)會(huì)比較速成。
以下我列舉一些你制作這個(gè)程序應(yīng)該要用到的一些基本知識(shí),你搞懂這些大概就可以做出這個(gè)程序了。不過,這樣速成的學(xué)習(xí)方法,也會(huì)有弊端,我會(huì)在下面補(bǔ)充說明。
首先你可以熟悉一下flash的界面。為編程做準(zhǔn)備,至少要了解庫和屬性面板,要了解影片剪輯或按鈕。
然后應(yīng)該學(xué)習(xí)一下編程的基本知識(shí),比如變量(Variable)、數(shù)據(jù)類型(Datatype)、方法(Method)的概念,還有if、for等常見語句的用法。你可以把這些當(dāng)關(guān)鍵詞在百度搜索一下(如果直接搜搜不到相關(guān)內(nèi)容,可以多加一個(gè)關(guān)鍵詞,比如編程或as3之類的,如果中文搜不到就搜英文關(guān)鍵詞)。
要了解一下as3的常用語法。比如聲明變量、方法的語句。關(guān)于這個(gè)可以搜一下as3的var和function關(guān)鍵詞。
最后,當(dāng)你對(duì)編程有了一個(gè)大致的概念之后,你就可以著手準(zhǔn)備你的這個(gè)小程序。
你可能需要用到的關(guān)鍵方法:
addEventListener() //你最可能用到的事件是MouseEvent.CLICK
Math.random()
Math.round()或Math.floor()或Math.ceil() //這三個(gè)都是可以用來數(shù)字取整的方法,有細(xì)微的不同
addChild()
因?yàn)槟闶浅鯇W(xué)者,即使是做這么簡(jiǎn)單的小程序,也有可能會(huì)遇到各種各樣的情況。建議你一開始不要想得太復(fù)雜,把基本的效果做出來再說,否則很有可能在一些非關(guān)鍵的問題上屢屢碰壁,最后半途而廢。而且有時(shí)因?yàn)樽约合氲锰珡?fù)雜,遇到問題連想問人都沒法問,因?yàn)楸磉_(dá)不清楚。
如果只是抽獎(jiǎng)的程序,學(xué)會(huì)了以上這些之后,要做出來應(yīng)該沒有什么大問題。如果你要搞什么附加的模塊,那就另當(dāng)別論了——比如用戶帳號(hào)、聯(lián)網(wǎng)、界面特效等等,我列舉的知識(shí)點(diǎn)不足以支持實(shí)現(xiàn)這些功能,那需要更多的學(xué)習(xí)。
那么,最后說一下這種速成學(xué)習(xí)法的弊端。
很明顯的,速成=基礎(chǔ)不扎實(shí),這簡(jiǎn)直就是自然而然的邏輯關(guān)系。
有可能出現(xiàn)的結(jié)果是:學(xué)習(xí)花的時(shí)間少,但寫代碼的效率低,花的時(shí)間多;一旦出現(xiàn)錯(cuò)誤,不知道該如何排錯(cuò);跟別人交流的時(shí)候,聽不懂各種術(shù)語;代碼不規(guī)范,別人不好幫你修改……等等。
要解決這些問題,只有一個(gè)途徑,就是系統(tǒng)、正規(guī)地學(xué)習(xí)編程。但是這樣一來,跟你這個(gè)問題的出發(fā)點(diǎn)就相差十萬八千里了。這就好比,本來你只是想自己做一艘船。但想做一艘正兒八經(jīng)的船,而不是玩具船,不是破破爛爛的船,那就要費(fèi)不少功夫。從它的材料開始,精心培育樹木、采集礦物、打制零件……如此涉及到整個(gè)制船業(yè)的知識(shí)。看起來,你并沒有打算走那么深。
如果我僅僅告訴你速成的學(xué)習(xí)方法,感覺上有點(diǎn)兒像害人。因?yàn)閷?duì)于學(xué)習(xí)編程來說,這不是一個(gè)好的開始。但如果我告訴你“乖乖從基礎(chǔ)開始學(xué)起吧”,似乎又有點(diǎn)兒強(qiáng)行替你做決定的感覺。
總而言之,現(xiàn)在我把兩個(gè)選項(xiàng)都告訴你了。
從基礎(chǔ)開始系統(tǒng)地學(xué)習(xí),這樣比較正規(guī),但也比較枯燥,可能你自學(xué)了半天也做不出什么像樣的東西,然后最初的那股興趣就漸漸消失了。不過,如果是這樣,flash+as3的建議就不一定合適了,或許你要仔細(xì)考慮一下職業(yè)規(guī)劃什么的,再?zèng)Q定發(fā)展的方向——這樣的話,就是比較嚴(yán)肅的話題了。
速成的學(xué)習(xí)法,如果你悟性好的話,能比較快地掌握一些重點(diǎn)的知識(shí),對(duì)編程有一個(gè)大概的了解(但是悟性不好的話,說不定反而會(huì)搞得更煩躁),很快地做出一些小成果出來。不感興趣的話,那就這樣了。感興趣的話,再往后發(fā)展?;A(chǔ)的缺乏、不良的書寫代碼習(xí)慣,這些也是可以后來再補(bǔ)充、糾正的。如果你不確定要往編程這條路上深入發(fā)展(比如打算以碼農(nóng)為職業(yè)),倒也可以用這種方法玩票,能走多遠(yuǎn)算多遠(yuǎn)。
解決方案2:
網(wǎng)賽有很多模版。沒必要自己做
解決方案3:
不知道你會(huì)那些語言啊 做桌面的一般用C# Web的用J2EE 至于什么編程軟件 ,,,,,建議還是自己補(bǔ)一補(bǔ)知識(shí)把,這個(gè)我不知道怎么回答你 貌似你好象什么都不知道
幫你做了一個(gè),不知是否滿意呢?
import?java.applet.Applet;
import?java.awt.Button;
import?java.awt.Color;
import?java.awt.Graphics;
import?java.awt.TextField;
import?java.awt.event.ActionEvent;
import?java.util.Random;
import?java.util.Vector;
public?class?Lottery?extends?Applet?{
private?static?final?long?serialVersionUID?=?1L;
int?w,h;
Button?ok,out,setup;
String[]?msg;
TextField[]?gaiLv;
TextField[]?jiangPin;
int?mx,ml;
int?maxNum;
Random?ran;
VectorInteger?fist;
VectorInteger?sec;
VectorInteger?third;
VectorInteger?lucky;
boolean?lot=false;
boolean?iserr=false;
boolean?issetup=false;
String?mesg="輸入錯(cuò)誤";
String?priseMsg="繼續(xù)努力!";
public?void?init(){
w=400;
h=220;
mx=20;
ml=40;
ran=new?Random();
this.setSize(w,?h);
this.setLayout(null);
ok=new?Button("抽獎(jiǎng)");
out=new?Button("退出");
setup=new?Button("確認(rèn)設(shè)置");
msg=new?String[4];
msg[0]="一等獎(jiǎng)";
msg[1]="二等獎(jiǎng)";
msg[2]="三等獎(jiǎng)";
msg[3]="幸運(yùn)獎(jiǎng)";
gaiLv=new?TextField[4];
jiangPin=new?TextField[4];
for(int?i=0;i4;i++){
gaiLv[i]=new?TextField("0.0"+(i+1));
this.add(gaiLv[i]);
gaiLv[i].setBounds(mx+ml,?75+i*26,?60,?18);
jiangPin[i]=new?TextField();
this.add(jiangPin[i]);
jiangPin[i].setBounds(mx+ml*3,?75+i*26,?80,?18);
}
this.add(ok);
ok.setBounds(260,?180,?60,?28);
ok.addActionListener(new?LotButtonAction(this));
this.add(out);
out.setBounds(330,?180,?60,?28);
out.addActionListener(new?LotButtonAction(this));
this.add(setup);
setup.setBounds(110,?180,?80,?24);
setup.addActionListener(new?LotButtonAction(this));
}
public?void?paint(Graphics?g){
g.setColor(Color.white);
g.fillRect(0,?0,?this.getWidth(),?this.getHeight());
g.setColor(new?Color(230,255,230));
g.fillRect(0,?0,?w,?30);
g.setColor(Color.BLUE);
g.drawString("JAVA抽獎(jiǎng)系統(tǒng)",?130,?20);
g.setColor(Color.ORANGE);
g.drawRect(10,?40,?230,?170);
g.setColor(Color.BLACK);
g.drawString("設(shè)置",?mx,?60);
g.drawString("概率",?mx+ml,?60);
g.drawString("獎(jiǎng)品",?mx+ml*3,?60);
for(int?i=0;imsg.length;i++){
g.setColor(new?Color(255-(i*30),45,89));
g.drawString(msg[i],?20,?90+i*26);
}
if(lot==true){
g.setColor(new?Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));
if(priseMsg.length()=7){
g.drawString(priseMsg,?260,?100);
}else{
g.drawString(priseMsg.substring(0,?5),?260,?100);
g.drawString(priseMsg.substring(5),?260,?120);
}
}
if(iserr==true){
g.drawString(mesg,?260,?100);
}
}
public?void?getLucky(){
float?firu=1;
float?secu=1;
float?thiu=1;
float?fouu=1;
float?minu=1;
if(gaiLv[0].getText().trim().length()1){
firu=Float.parseFloat(gaiLv[0].getText());
if(firu=0||firu=1){
iserr=true;
return;
}
if(firuminu){
minu=firu;
}
}
if(gaiLv[1].getText().trim().length()1){
secu=Float.parseFloat(gaiLv[1].getText());
if(secu=0||secu=1){
iserr=true;
return;
}
if(secuminu){
minu=secu;
}
}
if(gaiLv[2].getText().trim().length()1){
thiu=Float.parseFloat(gaiLv[2].getText());
if(thiu=0||thiu=1){
iserr=true;
return;
}
if(thiuminu){
minu=thiu;
}
}
if(gaiLv[3].getText().trim().length()1){
fouu=Float.parseFloat(gaiLv[3].getText());
if(fouu=0||fouu=1){
iserr=true;
return;
}
if(fouuminu){
minu=fouu;
}
}
if(minu=1||minu=0){
iserr=true;
return;
}
float?aNum=1/minu;
maxNum=(int)aNum;
int?count=(int)(firu/minu);
if(firu!=1){
fist=getLotteryVec(maxNum,count);
}else{
fist.removeAllElements();
}
count=(int)(secu/minu);
if(secu!=1){
sec=getLotteryVec(maxNum,count);
}else{
sec.removeAllElements();
}
count=(int)(thiu/minu);
if(thiu!=1){
third=getLotteryVec(maxNum,count);
}else{
third.removeAllElements();
}
count=(int)(fouu/minu);
if(fouu!=1){
lucky=getLotteryVec(maxNum,count);
}else{
lucky.removeAllElements();
}
issetup=true;
iserr=false;
}
protected?VectorInteger?getLotteryVec(int?maxNum,int?num){
VectorInteger?result=new?VectorInteger();
for(int?i=0;inum;i++){
result.add(ran.nextInt(maxNum));
}
return?result;
}
protected?int?getaNum(){
return?ran.nextInt(maxNum);
}
public?int?isLucky(int?pNum){
for(int?i=0;ifist.size();i++){
if(fist.get(i)==pNum){
return?1;
}
}
for(int?i=0;isec.size();i++){
if(sec.get(i)==pNum){
return?2;
}
}
for(int?i=0;ithird.size();i++){
if(third.get(i)==pNum){
return?3;
}
}
for(int?i=0;ilucky.size();i++){
if(lucky.get(i)==pNum){
return?4;
}
}
return?-1;
}
public?void?ButtonActionPerformed(ActionEvent?e){
String?acName=e.getActionCommand();
if(acName.equals("抽獎(jiǎng)")){
if(issetup==false){
priseMsg="請(qǐng)先設(shè)置參數(shù)!";
lot=true;
repaint();
lot=false;
return;
}
lot=true;
priseMsg=getResult(getaNum());
repaint();
//?lot=false;
}else?if(acName.equals("退出")){
this.setVisible(false);
this.stop();
this.destroy();
System.exit(0);
}else?if(acName.equals("確認(rèn)設(shè)置")){
lot=false;
getLucky();
repaint();
}
}
public?String?getResult(int?num){
int?resu=isLucky(num);
String?result="";
switch(resu){
case?-1:
result="繼續(xù)努力!";
break;
case?1:
result="恭喜你!一等獎(jiǎng)!\n獲得"+jiangPin[0].getText();
break;
case?2:
result="恭喜你!二等獎(jiǎng)!\n獲得"+jiangPin[1].getText();
break;
case?3:
result="恭喜你!三等獎(jiǎng)!\n獲得"+jiangPin[2].getText();
break;
case?4:
result="恭喜你!幸運(yùn)獎(jiǎng)!\n獲得"+jiangPin[3].getText();
break;
default:
result="繼續(xù)努力!";
}
return?result+num;
}
}
class?LotButtonAction?implements?java.awt.event.ActionListener{
Lottery?su;
public?LotButtonAction(Lottery?bun){
this.su=bun;
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
su.ButtonActionPerformed(e);
}
}
public?static?void?main(String[]?args)?{
int?input?=?10;
Scanner?s?=?null;
ListStudent?ls?=?new?ArrayList();
ls.add(new?Student("張3",?'男'));
ls.add(new?Student("張4",?'女'));
ls.add(new?Student("張5",?'男'));
ls.add(new?Student("張6",?'男'));
ls.add(new?Student("張7",?'女'));
ls.add(new?Student("張8",?'男'));
ListStudent?lscopy?=?new?ArrayList();
//?由于不能重復(fù)中獎(jiǎng),所以抽一次就要把中獎(jiǎng)的學(xué)生移除,所以不能在原list中操作。
lscopy.addAll(ls);
while?(input?!=?0)?{
System.out.println("選擇:");
System.out.println("1:一等獎(jiǎng)");
System.out.println("2:二等獎(jiǎng)");
System.out.println("3:三等獎(jiǎng)");
System.out.println("0:結(jié)束");
s?=?new?Scanner(System.in);
input?=?s.nextInt();
switch?(input)?{
case?1:
//?隨機(jī)出0-9?十個(gè)數(shù)字
int?first?=?(int)?(Math.random()?*?(lscopy.size()?-?1));
System.out.println("一等獎(jiǎng):"?+?lscopy.get(first));
//?已經(jīng)中獎(jiǎng)的移除
lscopy.remove(first);
break;
case?2:
for?(int?i?=?0;?i??2;?i++)?{
int?second?=?(int)?(Math.random()?*?(lscopy.size()?-?1));
System.out.println("二等獎(jiǎng):"?+?lscopy.get(second));
lscopy.remove(second);
}
break;
case?3:
for?(int?i?=?0;?i??3;?i++)?{
int?third?=?(int)?(Math.random()?*?(lscopy.size()?-?1));
System.out.println("三等獎(jiǎng):"?+?lscopy.get(third));
lscopy.remove(third);
}
break;
}
}
}
自己看著改一下,沒運(yùn)行過不知道有沒有錯(cuò),大概就是這么個(gè)意思。你自己再寫個(gè)學(xué)生類
//36中(1~36)選6位
for (int i = 1; i =6 ; i++)
{
int k = (int)((36-1+1)*Math.random()+1);
System.out.println(k);
if (k==0)
{
break;
}
}
//32中(1~32)選1位
int k = (int)((32-1+1)*Math.random()+1);
System.out.println(k);