作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
该程序生成 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/
案例研究如下, Tasks Table has an Order ID. 1 Task is belonged to an Order Table. An Order can have many ta
我有一个 fiddle ,如下所示,在位置 4(图片 4、图片 5、图片 6),我想要交叉淡入淡出(淡入/淡出) 要发生的图片库。目前该位置只显示图6。 https://jsfiddle.net/k0
我是一名优秀的程序员,十分优秀!