为什么我的字符串距离总是5?
Why is my character string distance always 5?
我有一个项目具有三个要求:
提示用户输入5个大写字符并另存为
变量。
随机生成一个5个字符的字符串并保存为变量
计算两个字符串之间的距离。
我以为我已经搞定了,而且它看起来很有效,但后来我注意到计算出的两个字符串之间的距离始终为 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。因此,从这个意义上说,您的代码没有任何问题。如果你重复运行这个程序,你最终得到的距离会小于五。
我有一个项目具有三个要求:
提示用户输入5个大写字符并另存为 变量。
随机生成一个5个字符的字符串并保存为变量
计算两个字符串之间的距离。
我以为我已经搞定了,而且它看起来很有效,但后来我注意到计算出的两个字符串之间的距离始终为 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。因此,从这个意义上说,您的代码没有任何问题。如果你重复运行这个程序,你最终得到的距离会小于五。