一个3位数的随机数,并尝试逐个猜测每个数字

时间:2018-04-16 07:47:35

标签: java random

我是Java新手,目前基于方法,类和构造函数。为了练习,我正在尝试编写一个基本游戏(safecracker)。所以我的逻辑是得到一个3位数的随机数并尝试猜测它。

private static int takeRandomSafeCode(int min, int max) {
    Random random = new Random();
    int result = random.nextInt(max - min) + min;
    return result;  

 private static void playGame() {
    int safeCode = takeRandomSafeCode(100, 999);
    int guess = takeGuess();

这些是我的随机数方法。但是如果玩家猜测一个数字并且第一个数字是正确的但是在错误的地方我想说" 1个数字是正确的但是在错误的位置"或者如果一个数字是正确的" 1个数字是正确的和正确的位置"

我需要在这里使用if-else语句我猜,但我得到我的数字int变量。逐个检查数字的方法是什么?我需要使用字符串吗?此时我有点失落。在你的帮助下,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果生成具有三个元素的整数数组,则可能更好 - 并且导致更简单的代码。从逻辑上讲,安全代码1-2-3不是一百二十三,但实际上 1后跟2后跟3

private static int takeRandomDigit() {
    Random random = new Random();
    int result = random.nextInt(10);
    return result;
}

private static void playGame() {
    int[] safeCode = {takeRandomDigit(), takeRandomDigit(), takeRandomDigit()};
    int guess = takeGuess();

    for (int safeDigit : safeCode) // for each digit in the safe code
    {
        // if the digit matches the guess, do something
    }
}

答案 1 :(得分:0)

如果你的号码是:你可以使用一些数学来取数字: d = 253

d % 10 -> gives you 3
d / 10 % 10 -> gives you 5
d / 100 -> gives you 2

将其更改为字符串也是一种选择,因为您可以使用字符串函数(如charAt等)访问不同的字符。

但是如果你想让它成为Java和OOP的方式来学习你可以创建一个对象并添加3个数字作为该对象的属性并输入一些逻辑来检查那里而不是做一些像这样的魔术技巧以上。例如:

class Combination {
  private  int firstPos;
  private  int secondPos;
  private  int thirdPos;

  public  Combination(){
    firstPos=random.nextInt(10);
    secondPos=random.nextInt(10);
    thirdPos=random.nextInt(10);
 }

 public boolean checkCombination(Combination testedCombination){
       .............
 }
 some methods, getter, setters etc
}