gpt4 book ai didi

java - 用户猜完 6 个随机数后,游戏还剩下 1 个

转载 作者:行者123 更新时间:2023-12-01 11:36:44 24 4
gpt4 key购买 nike

该程序生成 1 到 49 之间的 6 个随机数,并将它们放入一个数组中 - 这些是中奖号码。让用户猜测其中一个数字,每次猜测时应用程序都应告诉用户该数字是否为中奖号码。

它没有按预期工作,在检查完所有数字后,仍然有一个猜测,即使我检查了所有数字,任何帮助将不胜感激

public class Lotterator {

public static int[] populate ()
{
int[] winNums = new int[6];


winNums[0] = (int)(Math.random() * 49 + 1);

while (winNums[1] == winNums[0]){
winNums[1] = (int)(Math.random() * 49 + 1);
}

while (winNums[2] == winNums[1] || winNums[2] == winNums[0]){
winNums[2] = (int)(Math.random() * 49 + 1);
}

while (winNums[3] == winNums[2] || winNums[3] == winNums[1] || winNums[3] == winNums[0]){
winNums[3] = (int)(Math.random() * 49 + 1);
}

while (winNums[4] == winNums[3] || winNums[4] == winNums[2] || winNums[4] == winNums[1] || winNums[4] == winNums[0]){
winNums[4] = (int)(Math.random() * 49 + 1);
}

while (winNums[5] == winNums[4] || winNums[5] == winNums[3]|| winNums[5] == winNums[2]|| winNums[5] == winNums[1]|| winNums[5] == winNums[0]){
winNums[5] = (int)(Math.random() * 49 + 1);
}

return winNums;
}

public static boolean[] checkUserNum (int[] winNums, int userNum)
{
boolean[] correctNum = new boolean[6];


for(int c = 0;c < winNums.length; c++)
{
switch (c)
{
case 0:
if (winNums[0] == userNum) {
correctNum[0] = true;
}
break;
case 1:
if (winNums[1] == userNum) {
correctNum[1] = true;
}
break;
case 2:
if (winNums[2] == userNum) {
correctNum[2] = true;
}
break;
case 3:
if (winNums[3] == userNum) {
correctNum[3] = true;
}
break;
case 4:
if (winNums[4] == userNum) {
correctNum[4] = true;
}
break;
case 5:
if (winNums[5] == userNum) {
correctNum[5] = true;
}
break;
}
}

if (userNum != winNums[0] && userNum != winNums[1] && userNum != winNums[2] && userNum != winNums[3] && userNum != winNums[4] && userNum != winNums[5])
{
TextIO.put("That’s not one of my numbers!");

}
else if (userNum == winNums[0] || userNum == winNums[1] || userNum == winNums[2] || userNum == winNums[3] || userNum == winNums[4] || userNum == winNums[5])
{
TextIO.put("You got one of my numbers!");

}


return correctNum;
}

public static int[] removeFromArray(boolean[] correctNum, int[] winNums)
{

for (int c = 0; c < winNums.length; c++)
{
if (correctNum[c] == true) {
winNums[c] = 0;
}

}

return winNums;
}

public static int getUserNum()
{
int userNum = 0;

TextIO.put("Please input a number from 1 to 49:");
do {
userNum = TextIO.getInt();
} while(userNum < 1 || userNum > 49);

return userNum;
}

public static void main(String[] args) {
// TODO Auto-generated method stub

TextIO.putln("I bet you can’t guess my six numbers!\n");

int userNum = 0;
int[] winNums = new int[6];
boolean[] correctNums = new boolean[6];
int guesses = 0;
int correctGuesses = 0;

winNums = populate();

do{
userNum = getUserNum();
guesses++;
correctNums = checkUserNum(winNums, userNum);
winNums = removeFromArray(correctNums, winNums);

for(int c = 0; c < correctNums.length; c++)
{
if (correctNums[c] == true){
correctGuesses++;
}
}

TextIO.putln(" You’ve guessed "+ correctGuesses + " out of "+ guesses + " correctly.\n");


}while (correctGuesses != 6);


}
}

最佳答案

winNums[0] = (int)(Math.random() * 49  + 1);

while (winNums[1] == winNums[0]){
winNums[1] = (int)(Math.random() * 49 + 1);
}

在您的代码中,您正在 while 循环中检查数字 0 和 1 的相等性。由于设置了数字 0,因此它不相等。您可以在 do-while 循环中切换 while 循环,然后它应该可以工作。当您检查数组时,您会看到数字 1 为零。因此总是剩下 1 个数字。

关于java - 用户猜完 6 个随机数后,游戏还剩下 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com