카테고리 없음

[자바] 두 정수의 다른 자릿수를 비교하는 방법은 무엇입니까?

필살기쓰세요 2021. 1. 26. 21:55

숫자를 개별적으로 목록으로 저장하지 않고 수행하는 것이 좋습니다. 먼저 둘 다 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
-------------------

당신이 그들을 저장하는 경우 ArrayList<Integer> numbers에, 당신은 간단하게 호출 할 수 있습니다 numbers.contains(yourInt). 그렇지 않으면 당신은 시작할 수 boolean및 반복 처리를로 설정 목록을 true그리고 breaking혹시 찾을 경우.

-------------------

이것은 최적의 솔루션이 아닙니다. 그러나 다음과 같이 할 수 있습니다.

    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");
                                                                                                                                                }
                                                                                                                                                    }
                                                                                                                                                    


출처
https://stackoverflow.com/questions/39917348