我正在用Java创建一个简单的数字游戏。
简单来说,游戏就是猜数字。
但是,我想添加一个函数来检查数字是否正确。
例如:
int targetNumber = 1743;
int userGuess = 1564;
现在,由于1
中的数字userGuess
属于targetNumber
的准确位置,因此会打印出A
字母。
5
中的数字6
和userGuess
不属于targetNumber
中的任何位置,它会打印出I
字母(代表不准确)
但是,数字4
确实属于targetNumber
但不属于其准确位置。在这种情况下,它会打印出S
字母(代表半准确)。
我正在检查半精确数字,我已将userGuess
和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;
关于如何做到这一点的任何想法?
任何帮助都将不胜感激。
答案 0 :(得分:6)
如果您将它们存储在alasql("UPDATE MyDatabase.FooTBL SET Column2 = 1 Where Column1 = 'foo'")
中,则只需拨打ArrayList<Integer> numbers
即可。否则,您可以从numbers.contains(yourInt)
开始,并在列表中进行迭代,如果您找到它,则将其设置为boolean
和true
。
答案 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");
}
}