[英]How to compare different positions of digits of two integers?
我正在用Java创建一个简单的数字游戏。
简单地说,游戏就是猜数字。
但是,我想添加一个函数来检查数字是否正确。
例如:
int targetNumber = 1743;
int userGuess = 1564;
现在,由于数字1
在userGuess
与精确的位置属于targetNumber
,它会打印出信A
。
数字5
和6
的userGuess
不属于任何地方targetNumber
,将打印出来的信I
(代表不准确)。
但是,数字4
确实属于targetNumber
但不属于它的准确位置。 在这种情况下,它会打印出字母S
(Stands for Semi-Accurate)。
我正在检查半精确数字,我已经将数字从userGuess
和targetNumber
分离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.