【发布时间】:2020-09-27 18:55:33
【问题描述】:
我正在尝试找到一种方法来计算和打印来自用户输入的字符串之间的 Ascii 距离
Scanner scan = new Scanner(System.in);
System.out.print("Please enter a string of 5 uppercase characters:");
String userString = scan.nextLine();
和一个随机生成的字符串
int leftLimit = 65; // Upper-case 'A'
int rightLimit = 90; // Upper-case '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();
有没有一种方法可以计算距离,而不必将每个单独的字符从两个字符串中分离出来,比较它们并将它们重新加在一起?
【问题讨论】:
-
“ASCII 距离”是什么意思?此外,您的流过滤器很奇怪;它什么都不过滤。可以生成的每个数字都适合该过滤器。 “HELLO”与“ABCDE”的“ascii 距离”是多少?
-
感谢@rzwitserloot 的回复我相信你很明显我是一个极端的初学者。我想知道你所说的奇异是什么意思,因为我一点也不怀疑。我确实知道它会产生我正在寻找的随机字符串。 ASCII 距离为 37。您将“H”的 ascii 编号与“A”的 ascii 编号进行比较,依此类推,然后将差异加在一起得到 37。
-
@rzwitserloot,你是对的。 “.filter”行是不必要的