【发布时间】:2014-10-20 01:17:25
【问题描述】:
您将编写一个 Java 程序来玩 Pico、Fermi、Bagel 游戏。 以下是游戏规则:
计算机将随机生成一个“秘密”三位数。 第一个数字不会是0,所有的数字都会不同。 用户尝试猜测数字。如果用户猜对了, 那么游戏就结束了。
如果没有,电脑会给出提示,然后玩家再试一次。这 提示:
对于每个与正确位置的密码匹配的数字,计算机都会打印“Fermi”
对于每个匹配但位置不正确的数字,计算机会打印“Pico”
如果没有一个数字匹配,计算机会打印“Bagels”
该程序将有一个主类和一个 Bagels 类。百吉饼 类将调用其他 3 个方法来
生成密码
判断当前猜测是否中奖
- 评估当前猜测并打印提示
我的问题 -- 当我运行程序时,它要求我输入一个 3 位代码,但它只是一直要求我输入一个 3 位代码而不是比较用户的猜测数字到随机生成的数字。我假设我对类或方法做了一些愚蠢的事情,因为我们不久前才学习它们,它们仍然让我感到困惑。
程序的第一部分是我的主类,第二部分是百吉饼类。
package assignment.iii;
import javax.swing.JOptionPane;
import java.util.Scanner;
public class AssignmentIII {
public static void main(String[] args)
{
int playagain = JOptionPane.showConfirmDialog(null, "Would you like to play?", "Message", JOptionPane.YES_NO_OPTION);
while (playagain == JOptionPane.YES_OPTION) {
Bagels myBagels = new Bagels();
myBagels.playGame() ;
myBagels.randNumber = 0;
playagain = JOptionPane.showConfirmDialog(null, "Would you like to play again?", "Message", JOptionPane.YES_NO_OPTION);
}
}
}
// start of Bagels class
package assignment.iii;
import java.util.Random;
import javax.swing.JOptionPane;
public class Bagels{
public int randNumber;
private int Guess;
private int Rand1, Rand2, Rand3;
private int Guess1, Guess2, Guess3;
private int guessCount;
public void playGame()
{
do {
Guess = Integer.parseInt(JOptionPane.showInputDialog("Enter a three digit number"));
}
while (Guess != randNumber);
}
private int generateSecretNumber()
{
Random randN = new Random();
return randN.nextInt(999)+1;
}
private void printHint(String guess)
{
if(randNumber == Guess)
System.out.println("Correct");
else
{
Guess1 = (Guess)/100;
Guess2 = (Guess%100)/10;
Guess3 = (Guess%100)%10;
}
if(Guess1 == Rand1)
{
System.out.println("Fermi");
}
if(Guess2 == Rand2)
{
System.out.println("Fermi");
}
if(Guess3 == Rand3 )
{
System.out.println("Fermi");
}
if(Guess2 == Rand1)
{
System.out.println("Pico");
}
if(Guess3 == Rand1)
{
System.out.println("Pico");
}
if(Guess1 == Rand2)
{
System.out.println("Pico");
}
if(Guess3 == Rand2)
{
System.out.println("Pico");
}
if(Guess1 == Rand3)
{
System.out.println("Pico");
}
if(Guess2 == Rand3)
{
System.out.println("Pico");
}
else if(Guess1 != Rand1 && Guess1 != Rand2 && Guess1 != Rand3 &&
Guess2 != Rand1 && Guess2 != Rand2 && Guess2 != Rand3 &&
Guess3 != Rand1 && Guess3 != Rand2 && Guess3 != Rand3)
{
System.out.println("Bagels");
}
guessCount++;
}
}
【问题讨论】:
-
仍然不知道为什么它只是反复要求我输入 3 位数字?我认为这与我的百吉饼类有关,我的 generateSecretNumber 和 printHint 方法说它们未使用?但我不确定如何制作,以便在程序中使用它们?
标签: java class random methods numbers