繁体   English   中英

有没有办法将多个 if 语句与一个 else 语句联系起来?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM