java 板


LINE

因作業遇到困難 想上來請教一下各位大大 題目是一個21點的遊戲 (暫不考慮初始發兩張牌 & 發出的牌重複問題) 先貼一下目前code進度 ============================================================================== public class a1{ public static void main(String[] args) throws java.io.IOException { char key; int r; int player = 0; int bank = 0; do{ r = (int)(Math.random() * (13-1) + 1); player += r; System.out.print("玩家點數:" + r + "點\t玩家累計:" + player + "點\t"); if (player > 21) { System.out.println(); System.out.println("哇!玩家爆了!莊家贏"); }else if (player == 21) { System.out.println(); System.out.println("玩家21點!玩家贏"); }else { System.out.println("是否成要牌(y/n)\t"); key = (char)System.in.read(); System.in.read(); System.in.read(); } } while (key == 'y'); } } ============================================================================== 錯在黃色那一行 想請問是否while判斷式裡面 不能用來判斷字元呢? 如果是這樣的話 要怎麼修改~"~ 感謝各位大大 補上錯誤訊息 ============================================================================== a1.java:35: variable key might not have been initialized while (key == 'y'); ^ 1 error ============================================================================== --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.172.2.245
1F:→ adrianshum:.... 你憑什麼覺得while不能判斷字元?.... 12/08 15:58
回a大 我沒有憑什麼 只是對do while的條件式不理解 沒有書本可以參考 網路上倒是沒找到用來判斷字元的 所以想上來問問看
2F:→ superlubu:「錯」是錯什麼?Exception? Compilation Error? 12/08 15:59
※ 編輯: xtimer 來自: 218.172.2.245 (12/08 16:09)
3F:推 snowlike:while只能判斷boolean值,不過讓字元的比較回傳T/F就可以 12/08 16:17
4F:→ tkcn:樓上,原 po 的 source 在這個部份沒有問題 12/08 16:21
5F:→ ken915007:variable key might not have been initialized...這個 12/08 16:31
6F:→ neversay:char key = ''; 12/08 16:33
7F:→ ken915007:錯誤訊息寫得很清楚囉!! 12/08 16:34
8F:→ xtimer:小弟看的一頭霧水...囧rz.. 12/08 16:36
9F:→ ken915007:哇勒...斷掉了= = 12/08 16:37
10F:推 snowlike:恩正想要怎說;t大回覆得詳細,判斷時知道key是什麼就可 12/08 16:42
11F:→ xtimer:大概懂了t大的意似 現在的key對程式來說不是個char... 12/08 16:45
12F:→ xtimer:還是不會轉....囧rz.. 12/08 17:06
13F:→ adrianshum:不是 '不是個char', 而是未初始化.... 12/08 17:08
14F:→ xtimer:key可以直接拿來輸出會顯示y 但不能放進判斷式裡.. 12/08 17:41
15F:→ snowlike:那只有在else的情況,它不是'一定'會被賦值 12/08 18:08
16F:→ xtimer:完成了...結果最後判斷式是直接給兩個一樣的值做無限迴圈 12/08 18:59
17F:→ xtimer:直接在裡面判斷 條件不成立的話就直接跳出do-while 12/08 19:04
18F:→ xtimer:最後還是不懂字元在判斷式裡該怎麼使用..~"~ 謝謝各位大大 12/08 19:05
============================================================================= import java.io.*; public class Number21{ public static void main(String[] args) throws java.io.IOException { int r, rf; int player = 0; int bank = 0; char key; String card; String jqk; do{ card = ""; //初始花色 jqk = ""; //初始人頭點數 rf = (int)(Math.random() * (4-1) + 1); //決定牌花色start switch(rf) { case 1: card += ((char)6); break; case 2: card += ((char)3); break; case 3: card += ((char)4); break; case 4: card += ((char)5); break; //決定牌花色end } r = (int)(Math.random() * (13-1) + 1); //發一張牌 if (r <= 10) { player += r; System.out.print ("玩家點數:" + card + r + "\t玩家累計:" + player + "點\t"); } else { if (r == 11) jqk += "J"; if (r == 12) jqk += "Q"; if (r == 13) jqk += "K"; r = 10; player += r; System.out.print ("玩家點數:" + card + jqk + "\t玩家累計:" + player + "點\t"); } if(player > 21) { System.out.println("\n哇!玩家爆了!莊家贏"); break; //爆了,跳出迴圈 }else if (player == 21) { System.out.println("\n玩家21點!玩家贏"); break; //贏了,跳出迴圈 }else { System.out.print("是否補牌(y/n)\t"); key = (char)System.in.read(); System.in.read(); System.in.read(); int i = key; if (i != 121) //判斷輸入值不等於'y' break; //就跳出迴圈 } } while (1 == 1); //直接作成無窮迴圈 if(player < 21) //玩家沒爆,也沒21點 { //才換莊家補牌 do{ card = ""; //初始花色 jqk = ""; //初始人頭 rf = (int)(Math.random() * (4-1) + 1); //決定牌花色start switch(rf) { case 1: card += ((char)6); break; case 2: card += ((char)3); break; case 3: card += ((char)4); break; case 4: card += ((char)5); break; //決定牌花色end } r = (int)(Math.random() * (13-1) + 1); if (r <= 10) { bank += r; System.out.print ("莊家點數:" + card + r + "\t莊家累計:" + bank + "點\t"); } else { if (r == 11) jqk += "J"; if (r == 12) jqk += "Q"; if (r == 13) jqk += "K"; r = 10; bank += r; System.out.print ("莊家點數:" + card + jqk + "\t莊家累計:" + bank + "點\t"); } if (bank > 21) { System.out.println("\n哇!莊家爆了!玩家贏"); break; } else if(bank == 21) { System.out.println("\n哇!莊家21點!莊家贏"); break; } else { if (bank < player) System.out.println("莊家再補一張牌"); else if (bank > player) { System.out.println ("\n莊家" + bank + "點,玩家" + player + "點,莊家贏!"); break; } else { System.out.println ("\n莊家及玩家都" + bank + "點,平手!"); break; } } } while (1 == 1); } } } ============================================================================== ※ 編輯: xtimer 來自: 218.172.2.245 (12/08 19:10)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP