【发布时间】:2014-12-11 04:26:48
【问题描述】:
我正在为 Mastermind 类型的游戏编写 Java 代码,其中计算机生成一个随机的 4 位数字供玩家解决,而不是颜色。如果猜测不正确,则应该指出猜测的哪些数字在生成的随机数的正确位置。这是我的代码:
import java.util.Scanner;
import java.util.Random;
import java.lang.String;
public class CSCD210HW2
{
public static final int MAX = 10;
public static void main(String [] args)
{
int nums, guess, countMe;
String userChoice;
boolean tryAgain = false;
boolean reDo = false;
Scanner kb = new Scanner(System.in);
Random rand = new Random();
String ans = null;
do
{
reDo = false;
nums = rand.nextInt(9999 - 1000) + 1000;
countMe=0;
do
{
System.out.print("Enter Four Digit Guess: ");
guess = kb.nextInt();
countMe++;
while(guess < 1000 || guess > 9999)
{
System.out.print("I SAID 4 DIGITS! Try Again: ");
guess = kb.nextInt();
}
if(nums < guess)
{
System.out.println("Your Guess Was Too High.");
System.out.println("Guesses Left: "+(MAX-countMe));
}
else if(nums > guess)
{
System.out.println("Your Guess Was Too Low.");
System.out.println("Guesses Left: "+(MAX-countMe));
}
if(nums == guess)
{
System.out.print("Congratulations! Computer Bust!");
}
}while(guess != nums && countMe < MAX);
System.out.println(" Game Over! The Number Was: "+nums);
System.out.print("Try Again? ");
userChoice = kb.next();
while(!userChoice.equalsIgnoreCase("yes") && !userChoice.equalsIgnoreCase("no"))
{
System.out.print("It's Quite Simple. YES or NO: ");
userChoice = kb.next();
}
if(userChoice.equalsIgnoreCase("YES"))
{
reDo = true;
}
}while(reDo);
}//end main
}//end TheClass
我唯一的问题是正确位置部分的数字。我知道它可以使用数组来完成,但我还不太习惯使用它们,所以我宁愿不这样做。我还能怎么做呢?
【问题讨论】:
-
您将更轻松地为此使用数组,并且您将受益于更多地了解一个极其重要的数据结构。如果您对避免数组一无所知,您可以将数字转换为 4 个字符的字符串,然后根据位置检查字符串中的元素。但无论如何,这种方法在概念上类似于处理数组!