java确保只允许执行一条ifelse语句
我有点不知道我可以用什么样的陈述来解决我的问题
我正在写一个程序,需要四个随机数和四个Playerguess。如果第一个、第二个、第三个或第四个随机数分别与第一个、第二个、第三个或第四个参赛者匹配,他们将获得每场比赛的红牌(因此最多4个,最少0个)。如果playerGuess号码确实出现在随机数字序列中,但出现在错误的位置,则玩家将获得一枚白色pin。如果一个随机数字被授予了一个红色的pin(意味着在正确的位置上正确猜测),那么这个数字就不能再奖励任何白色的pin了
示例:
随机数序列(0,1,2,3)与playerGuesses(0,2,2,1)匹配将产生2个红色引脚和1个白色引脚)
下面的代码显示了确定红色和白色引脚的过程。请注意,randomNumber和playerGuesses都是四个整数的数组
//Determining the amount of red and white pins
if (randomNumbers[0] == playerGuesses[0])
{Red = Red+1;}
else if (randomNumbers[0] == playerGuesses[1] || randomNumbers[0] == playerGuesses[2] || randomNumbers[0] == playerGuesses[3])
{White = White+1;}
if (randomNumbers[1] == playerGuesses[1])
{Red = Red+1;}
else if (randomNumbers[1] == playerGuesses[0] || randomNumbers[1] == playerGuesses[2] || randomNumbers[1] == playerGuesses[3])
{White = White+1;}
if (randomNumbers[2] == playerGuesses[2])
{Red = Red+1;}
else if (randomNumbers[2] == playerGuesses[0] || randomNumbers[2] == playerGuesses[1] || randomNumbers[2] == playerGuesses[3])
{White = White+1;}
if (randomNumbers[3]==playerGuesses[3])
{Red = Red+1;}
else if (randomNumbers[3] == playerGuesses[0] || randomNumbers[3] == playerGuesses[1] || randomNumbers[3] == playerGuesses[2])
{White = White+1;}
当多个if-else语句为真时,就会出现一个非常特殊的问题。最好用一个例子来说明:
计算机生成:(497)
玩家猜测:(1 7 1)
控制台返回:2个白色引脚,0个红色引脚
在本例中,确定红色引脚的if语句均未被触发。因此,运行所有if-else语句来确定白色引脚
问题是,玩家猜测中的“7”会触发第三个和第四个if-else语句,用于添加白色PIN,从而产生两个白色PIN。然而,这场比赛的目的是只奖励一枚白大头针
你们知道如何确保任何玩家在没有红色徽章的情况下只能触发一个白色徽章吗
(我希望能提供回答我问题所需的所有信息!)
# 1 楼答案
我建议采取另一种方式, 具有更简单的逻辑和更少的
if
语句它还解决了你的问题,太多的白色引脚
对于每个可能的数字(0,1,2,3,…9),数一数它的次数 在两个数组中都发生
这两个计数中较小的一个会导致 引脚总数李>