我正在尝试创建一个应用程序,用户必须记住random number
(长17位),然后输入她/他记得的内容。
生成数字后,如何检查它们的相似程度,即10个数字匹配,因此它与58%相似。
答案 0 :(得分:0)
让我们说你比较这两个字符串:
String number1; // users number
String number2; // your number
既然你说两者都是17位长,不需要考虑不同的尺寸(那么你应该从最后开始):
int matches = 0;
for (int i = 0; i < number1.length(); i++) {
if (number1.substring(i, i + 1).equals(number2.substring(i, i + 1))) matches++;
}
另一种方法是使用char数组:
char[] charArray1 = number1.toCharArray();
char[] charArray2 = number2.toCharArray();
for (int i = 0; i < charArray1.length; i++) {
if (charArray1[i] == charArray2[i]) matches++;
}
或者使用字符串自己的字符数组(感谢@David Wallace):
for (int i = 0; i < charArray1.length; i++) {
if (number1.charAt(i) == number2.charAt(i)) matches++;
}
现在,你计算一下:
double procent = matches / (number1.length() * 1d) * 100;
您必须乘以1
的双倍值,因此它不会使用int
进行计算,这将迫使它处理双打。
答案 1 :(得分:0)
你可以使用整数(或长)除法和模来获得int的数字。 请参阅此java代码段:
int num1=1234;
int dig[]=new int[4];
dig[3]=num1 /1000;
dig[2]=(num1%1000)/100;
dig[1]=(num1%100) /10;
dig[0]=(num1%10) /1;
for(int i=0;i<4;i++){
System.out.println("dig"+i+" : "+dig[i]);
}
它将打印:
dig0 : 4
dig1 : 3
dig2 : 2
dig3 : 1