为什么我的字符串距离总是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);
} 

解决方法

由于您正在将用户输入的五个字符的字符串与随机生成的字符串进行比较,因此很可能没有对应字符相同的位置,这会使距离等于5。因此,从这个意义上讲,您的代码没有错。如果您重复运行该程序,最终距离将小于5。