在if语句中能否使用两个数学条件?黑杰克程序条件判断报错求助
解决黑杰克程序中的条件判断语法错误
嘿,我看到你在开发黑杰克程序时遇到了条件判断的语法问题,这是个很典型的新手容易踩的坑,咱们来快速搞定它!
错误原因分析
你写的代码:
if(dValue1 + dValue2 > pValue1 + pValue2 && < 21)
之所以会报 Type mismatch : cannot convert from int to boolean 和 The operator && is undefined for the arguments types boolean, int 这类错误,核心问题在于逻辑运算符&&的两边必须都是完整的布尔表达式。你在&&右侧只写了<21,编译器完全不知道你要拿什么值和21比较——它需要的是类似X < 21这样完整的判断,而不是孤零零的<21。
正确的写法
我们可以分两种方式来修正:
方式1:直接补全布尔表达式
把庄家的手牌总和在&&右侧重复写一遍,让两边都是完整的判断:
if(dValue1 + dValue2 > pValue1 + pValue2 && dValue1 + dValue2 < 21)
方式2:先计算总和到变量(更推荐)
先把庄家和玩家的手牌总和分别存入变量,这样代码可读性更高,后续如果需要复用总和也不用重复计算:
int dealerTotal = dValue1 + dValue2; int playerTotal = pValue1 + pValue2; if(dealerTotal > playerTotal && dealerTotal < 21) { // 这里写庄家获胜的逻辑 }
额外小提示
如果你的黑杰克程序后续要处理A牌(可以当1或11)的情况,那手牌总和的计算逻辑会更复杂,到时候可以再针对这部分做调整,但当前先把基础的条件判断语法搞定就好啦!
内容的提问来源于stack exchange,提问作者PizzaParrot
相关产品推荐
相关产品推荐

