为什么if执行完,还会执行else

qq_37061510 2016-12-25 10:22:50
if (Rule.Result(m,n,arrchessboard) < 6)
{
MessageBox.Show("if "+Rule.Result(m, n, arrchessboard).ToString());
switch(Rule.Result(m,n,arrchessboard))
{
case 1:
MessageBox.Show("黑棋双三禁手失败,请重新开始!");
break;
case 2:
MessageBox.Show("黑棋双四禁手失败,请重新开始!");
break;
case 3:
MessageBox.Show("黑棋长连禁手失败,请重新开始!");
break;
case 4:
if (stoneflag)
{
MessageBox.Show("黑棋胜利,请重新开始!");
}
else
{
MessageBox.Show("白棋胜利,请重新开始!");
}
break;
case 5:
MessageBox.Show("平局,请重新开始!");
break;
}
//重新开始!
int a = Rule.Result(m, n, arrchessboard);
Start();
//MessageBox.Show("if结束:"+Rule.Result(m,n,arrchessboard).ToString());
return;
}

else
{

//交换当前棋子颜色
stoneflag = !stoneflag;
//MessageBox.Show("下一步:"+stoneflag + " ");
}
//测试
MessageBox.Show(Rule.Result(m,n,arrchessboard).ToString());
...全文
1159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2016-12-26
  • 打赏
  • 举报
回复
case语句中用if,这个用法真别扭。还不如全部用if
Forty2 2016-12-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_37061510 的回复:
int a = Rule.Result(m, n, arrchessboard); Start(); int b = Rule.Result(m, n, arrchessboard); //MessageBox.Show("if结束:"+Rule.Result(m,n,arrchessboard).ToString()); return; 把断点加在return语句上,b和a值不一样,b值一直都为3
如果Start()里面,改变了m,n或者改变了棋盘,那么Rule.Result(m,n,arrchessboard)应该也会改变。
qq_37061510 2016-12-25
  • 打赏
  • 举报
回复
int a = Rule.Result(m, n, arrchessboard);
Start();
int b = Rule.Result(m, n, arrchessboard);
//MessageBox.Show("if结束:"+Rule.Result(m,n,arrchessboard).ToString());
return;

把断点加在return语句上,b和a值不一样,b值一直都为3
qq_37061510 2016-12-25
  • 打赏
  • 举报
回复
MessageBox.Show(Rule.Result(m,n,arrchessboard).ToString());结果一直都是6...
qq_37061510 2016-12-25
  • 打赏
  • 举报
回复
问题已经解决了,谢谢各位
xuzuning 2016-12-25
  • 打赏
  • 举报
回复
Rule.Result 将做什么,会返回什么?你没说,我也不知道 看样子像是检查落子的合法性 那么连续两次 Rule.Result(m,n,arrchessboard) 应表示在同一位置放了两个棋子,自然是错误的了

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧