台灣最大程式設計社群網站
線上人數
2255
 
會員總數:246319
討論主題:189850
歡迎您免費加入會員
討論區列表 >> Java >> 關於猜數字遊戲
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於猜數字遊戲
價值 : 30 QP  點閱數:1267 回應數:3
樓主

Yang Mei
初學者
5 12
183 33
發送站內信

這是猜數字遊戲
我把一開始電腦產生的數字先顯示出來
然後試試看輸入正確的
但是卻怎麼樣都是3A0B(三個數字對 位置也對)
不知道是哪裡出了問題 麻煩幫幫我 謝謝

int [] num=new int[4];//宣告,存放電腦產生的亂數號碼
int [] g=new int[4];//宣告,存放輸入產生的亂數號碼
//利用迴圈產生4個不同號碼
for(int i=0;i<num.length;i++){
num[i]=(int) (Math.random()*10);
for(int j=0;j<i;j++){
if(num[i]==num[j])
num[j]=(num[j]*num[j]+1)%10;//數字相同時,則另外用出一個數字
}
}
for(int i=0;i<num.length;i++)
System.out.print(num[i]+" ");

System.out.println("猜數字遊戲開始,你有10次機會!");
Scanner s=new Scanner(System.in);//取得Scanner物件
int r=10;//表示有10次機會
while(r>0){//輸入機會大於0
int t=1;
System.out.println("請輸入四個不同數字:");
while(t>0){
//開始輸入四個數字
for(int i=0;i<g.length;i++){
System.out.print("請輸入第"+(i+1)+"個數字:");
g[i]=s.nextInt();//取得輸入的整數
}
for(int i=0;i<num.length;i++){
for(int j=0;j<g.length;j++){
if((g[i]==g[j])&&(j!=i)){ //如輸入相同
t=1;
break;//跳出判斷,產生"輸入錯誤,請重新輸入!"
}
else
t=0;
}
if(t==1)
break;//跳出判斷
}
if(t==1)
System.out.println("輸入錯誤,請重新輸入!");
}

int x=0,y=0;//宣告"x"A"y"B
for(int i=0;i<num.length;i++)
for(int j=0;j<i;j++){
if(num[i]==g[i]){//數字相同
x++;
break;//跳出判斷
}
if(g[j]==num[i])//數字相同
y++;
break;//跳出判斷
}
if(x==4){//四個數字都相同
System.out.println("猜對囉!真厲害!");
break;//跳出判斷
}
else{
r--;//剩下機會
System.out.println("結果為:"+x+"A"+y+"B");
if(r!=0)//剩下機會大於0次時
System.out.println("你還有"+r+"次機會,繼續努力!");
System.out.println("");
if(r==0){//剩下機會為0次時
System.out.println("你沒有猜對!");

for(int i=0;i<num.length;i++)
System.out.print("電腦產生的數字為:"+num[i]+";");
break;
}

}
}

}
}

搜尋相關Tags的文章: [ JAVA 猜數字 ] ,
本篇文章發表於2013-06-17 22:06
1樓
作者回應

Yang Mei
檢舉此回應
我已經知道為什麼了~
本篇文章回覆於2013-06-17 22:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Yang Mei
檢舉此回應
可是我還是搞不定數字偶爾會重複的問題

請問哪個大大知道要怎麼修改 感謝
本篇文章回覆於2013-06-17 22:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Raymond
檢舉此回應
把 num 的大小設為 10, 並存入 0...9. 然後用「洗牌法」去打亂它們的次序, 最後取出首 4 個元素做為要猜的數字.

本篇文章回覆於2013-06-18 00:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.