好吧,让我们说秘密针是:
2236(生化危机2参考)
如果某人输入2200 我的比赛数为2;
可是:
如果此人输入:2000或0200,或0020,或0002 结果表明它仍然匹配2个数字。
它应该只匹配2号码中的一个,但我仍然得到2的匹配数。
我目前正在使用:
if(currentPin.indexOf(secretPin.charAt(i)) != -1)
在一个循环上。
更新:
假设声明并初始化了所有必要的变量并且所有范围都已关闭
继承了匹配的代码
for (int i = 0; i < secretPin.length(); i++)
{
if (currentPin.indexOf(secretPin.charAt(i)) != -1)
{
System.out.println("Found");
match++;
}
}
//输出:
2236 // SECRET NUMBER显示
0002 //用户GUESS
找到了
找到了
MATCH:2 //如果USER GUESS只包含一个数字2
答案 0 :(得分:2)
假设密钥引脚和当前引脚之间的位数始终相同,这个简单的算法就可以检索匹配次数:
public static void main(String[] args) {
String secretPin = "2236";
String currentPin = "6322";
int match = 0;
for (int i = 0; i < currentPin.length(); i++) {
if (secretPin.contains(String.valueOf(currentPin.charAt(i)))) {
secretPin = secretPin.replaceFirst(String.valueOf(currentPin.charAt(i)), "");
match++;
}
}
System.out.println(match);
}
答案 1 :(得分:0)
&#34; if(currentPin.indexOf(secretPin.charAt(i)!= -1)&#34;正在获取一个字符,检查它是否!= -1,并传递布尔结果indexOf。你也有一个括号不匹配。由于这不会编译,更不用说产生不准确的输出了。如果你想要审查它,请粘贴你说你能运行的代码。