问题描述
-
计算两个字符串之间的距离。
我以为我拥有了它,并且看起来确实可行,但是随后我注意到,两个字符串之间的计算距离始终为5。 我猜我的
stringLength
被用在stringdist
上。如果您可以查看一下,并向我指出失踪的正确方向,我将不胜感激。
import java.util.Random;
import java.util.Scanner;
public class StringDiff {
public static void main(String[] args) {
Scanner scan = new Scanner(system.in);
System.out.println ("Please enter 5 Uppercase letters.");
String userString = scan.nextLine();
int leftLimit = 48; // numeral '0'
int rightLimit = 122; // letter 'z'
int stringLength = 5;
Random random = new Random();
String randString = random.ints(leftLimit,rightLimit + 1)
.filter(i -> (i <= 57 || i >= 65) && (i <= 90 || i >= 97))
.limit(stringLength)
.collect(StringBuilder::new,StringBuilder::appendCodePoint,StringBuilder::append)
.toString();
{
int i = 0,stringdist = 0;
while (i < userString.length())
{
if (userString.charat(i) != randString.charat(i))
stringdist++;
i++;
}
System.out.println ("The user string is: " + userString);
System.out.println ("The random string is: " + randString);
System.out.println ("The distance between " + userString + " and " + randString + " is " + stringdist);
}
解决方法
由于您正在将用户输入的五个字符的字符串与随机生成的字符串进行比较,因此很可能没有对应字符相同的位置,这会使距离等于5。因此,从这个意义上讲,您的代码没有错。如果您重复运行该程序,最终距离将小于5。