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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP