如何比较两个整数的不同位置?

时间:2016-10-07 12:29:39

标签: java

我正在用Java创建一个简单的数字游戏。

简单来说,游戏就是猜数字。

但是,我想添加一个函数来检查数字是否正确。

例如:

int targetNumber = 1743;
int userGuess = 1564;

现在,由于1中的数字userGuess属于targetNumber的准确位置,因此会打印出A字母。

5中的数字6userGuess不属于targetNumber中的任何位置,它会打印出I字母(代表不准确)

但是,数字4确实属于targetNumber但不属于其准确位置。在这种情况下,它会打印出S字母(代表半准确)。

我正在检查半精确数字,我已将userGuesstargetNumber的数字分开,并将它们存储在两个数组中:

int[] targetNumber = new int[4];
targetNumber[0] = 1;
targetNumber[1] = 7;
targetNumber[2] = 4;
targetNumber[3] = 3;

int[] userGuess = new int[4];
userGuess[0] = 1;
userGuess[1] = 5;
userGuess[2] = 6;
userGuess[3] = 4;

关于如何做到这一点的任何想法?

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:6)

如果您将它们存储在alasql("UPDATE MyDatabase.FooTBL SET Column2 = 1 Where Column1 = 'foo'") 中,则只需拨打ArrayList<Integer> numbers即可。否则,您可以从numbers.contains(yourInt)开始,并在列表中进行迭代,如果您找到它,则将其设置为booleantrue

答案 1 :(得分:2)

我建议不要将数字单独存储为列表。首先将两者都转换为String。然后,运行循环迭代每个字符。如果两个字符串的当前索引处的字符相同,则显示&#34; A&#34;。否则,检查 - targetNumber中是否存在该字符;如果是,则显示&#34; S&#34;,否则显示&#34; I&#34;。

public static void function(int targetNumber, int userGuess){
    String a = Integer.toString(targetNumber), 
           b = Integer.toString(userGuess);
    for(int i=0 ; i<4; i++){
        if(a.charAt(i) == b.charAt(i))
            System.out.print("A");
        else{
            if(a.indexOf(b.charAt(i)) == -1)
                System.out.print("I");
            else
                System.out.print("S");
        }
    }
}

在你的情况下,由于你的targetNumber是1743而userGuess是1564,你应该调用

function(1743, 1564);

将输出显示为

AIIS

答案 2 :(得分:2)

这不是一个非常理想的解决方案。但你可以这样做:

  if(moment('2010-10-20').isBetween('2010-10-19', '2010-10-25')){
     //return true if exists
    //Do whatever you want
  }

答案 3 :(得分:1)

    int[] targetNum = {1, 7, 4, 3};
    int[] userGuess = {1, 5, 6, 4};

    List<Integer> targetList = IntStream.of(targetNum).boxed().collect(Collectors.toList());
    List<Integer> guessList = IntStream.of(userGuess).boxed().collect(Collectors.toList());


    for (Integer currentGuess : guessList) {
        if(targetList.contains(currentGuess)) {
            int targetIndex = targetList.indexOf(currentGuess);
            int guessIndex = guessList.indexOf(currentGuess);

            if(targetIndex == guessIndex) {
                System.out.println("A");
            } else {
                System.out.println("S");
            }
        } else {
            System.out.println("I");
        }
    }