카테고리 없음
[자바] 두 정수의 다른 자릿수를 비교하는 방법은 무엇입니까?
필살기쓰세요
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