【发布时间】:2012-07-08 08:14:48
【问题描述】:
这似乎是一个非常简单的问题,但在互联网上几乎没有关于它的文章,而且我很难自己正确地实现它。在 Java 中对 ASCII 字符实现模块化 comparison 函数的最佳方法是什么,以便比较“环绕”字母表的末尾?我想将它用于“介于”函数中,该函数可以在任意位置分割整个字母表,并在被问及“y”是否介于“x”和“b”之间时正确返回“true”。
我已经找到了所有关于字符模块化算术的问题和答案,所以我知道如何使用这样的代码进行模块化加法(字符移位):
char shifted = (((original - 'a') + 1) % 26) + 'a';
但是,这是基于 Java 内置的模块化算术函数,没有可比较的等效函数。即使我使用的是普通整数,我也无法询问 Java 是否 a
所以一般的问题是,在 Java 中实现模块化比较操作的最佳方式是什么?如果这个问题太难了,至少有办法让这种比较适用于 ASCII 字母表吗?
【问题讨论】:
-
请注意,“模比较”对于二进制比较没有意义:模算术中没有“小于”顺序。不过,“介于”之间的事情仍然是可能的,因此您的问题仍然有效。
标签: java math ascii string-comparison