为什么我的字符串距离总是5?

Why is my character string distance always 5?

我有一个项目具有三个要求:

  1. 提示用户输入5个大写字符并另存为 变量。

  2. 随机生成一个5个字符的字符串并保存为变量

  3. 计算两个字符串之间的距离。

    我以为我已经搞定了,而且它看起来很有效,但后来我注意到计算出的两个字符串之间的距离始终为 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);
} 

由于您将一个包含五个字符的 user-entered 字符串与一个随机生成的字符串进行比较,因此很可能没有对应字符相同的位置,这将使距离等于 5。因此,从这个意义上说,您的代码没有任何问题。如果你重复运行这个程序,你最终得到的距离会小于五。