如何检查两个int之间的相似性java

时间:2016-05-07 08:58:14

标签: java android

我正在尝试创建一个应用程序,用户必须记住random number(长17位),然后输入她/他记得的内容。

生成数字后,如何检查它们的相似程度,即10个数字匹配,因此它与58%相似

2 个答案:

答案 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