[英]Is there a way to tie multiple if statements to one else statement?
我正在开发一个计算机科学程序,我必须制作一个 Yahtzee 游戏,我想知道一些事情 - 有没有办法让所有这些 if 语句与一个 else 相关联? 这有点像一个 switch 语句,我可以检查它们是否相等,如果不相等,只需使用 else 将 sameNum 等同于 maxSam。 我不能使用 else ifs,因为条件都是相互独立的,而且我不能使用 switch,因为我需要检查一些东西。 无论出于何种原因,这也是不允许的。
这是我的代码。 变量 'sameNum' 用于表示相同骰子的连击数,而 'maxSame' 是迄今为止的最高连击数。 如果可能的话,我想减少行数,但如果我需要所有 if 语句,那也没关系。
我想推迟继续该程序,直到找到更好的答案,但是 if/else 的 rest 类似于:
if(curDice == d1 && iteration != 1)
等等
for(int i = 0; i < 5; i++)
{
switch(iteration)
{
case 0:
curDice = d1;
case 1:
curDice = d2;
case 2:
curDice = d3;
case 3:
curDice = d4;
case 4:
curDice = d5;
}
if(curDice == d1 && iteration != 0)
{
sameNum++;
}
else
{
if(sameNum > maxSame)
{
maxSame = sameNum;
}
}
/* keep doing this for the rest of the dice*/
iteration++;
}
请不要采取这种艰难的方式,但是您的代码试图以一种非常艰难的方式解决一些简单的问题。
首先,您应该将骰子结果存储在一个数组中。 这将使对其进行数学运算变得容易得多。
由于您提到了它的 CS 并且您正在迭代一个固定数量,因此仅迭代该数组 6 次并确定最常出现的数字可能是最快的(不是运行时而是编码时间)。
dices = new int[5];
int biggestMatch = 0;
int matchingDice = 0;
for(i = 1; i <= 6; i++){
int currentMatch = 0;
for(int d : dices){
if(i == d){
currentMatch ++;
}
}
if(currentMatch > biggestMatch){
biggestMatch = currentMatch;
matchingDice = i;
}
}
matchingDice 现在是您掷得最多的数字,而最大的匹配是频率。
例如,如果您想检查街道,也可以将结果存储在数组中。
diceResults[0,1,2,0,0,1] 其中索引表示骰子值 -1(因为 arrays 从 0 开始)和该字段中的值您掷骰子的频率。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.