繁体   English   中英

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

[英]How to compare different positions of digits of two integers?

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

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

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

例如:

int targetNumber = 1743;
int userGuess = 1564;

现在,由于数字1userGuess与精确的位置属于targetNumber ,它会打印出信A

数字56userGuess不属于任何地方targetNumber ,将打印出来的信I (代表不准确)。

但是,数字4确实属于targetNumber但不属于它的准确位置。 在这种情况下,它会打印出字母S (Stands for Semi-Accurate)。

我正在检查半精确数字,我已经将数字从userGuesstargetNumber分离targetNumber ,并将它们存储在两个数组中,如下所示:

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;

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

任何帮助,将不胜感激。

如果将它们存储在ArrayList<Integer> numbers ,那么您只需调用numbers.contains(yourInt) 否则你可以从boolean开始并遍历列表,将其设置为true ,如果找到它就会breaking

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

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

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

    public class Test {
    public static void main(String args[]) {
        int targetNumber = 1743;
        int userGuess = 1564;
        String target = "" + targetNumber;
        String guess = "" + userGuess;

        for (int i = 0; i < guess.length(); i++) {
            char ch = guess.charAt(i);
            int j = target.indexOf(ch);
            if (j == -1) {
                System.out.println("I");
            } else if (j == i) {
                System.out.println("A");
            } else {
                System.out.println("S");
            }
        }
    }
}
    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");
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM