0

我创建了两个函数,它们将两个字符的数值相加和相减,并在 PHP 中返回结果的字符。是这样的:

function sumchars($c1, $c2) {
    return chr(ord($c1) + ord($c2));
}

function subchars($c1, $c2) {
    return chr(ord($c1) - ord($c2));
}

好吧,我还在 Java 中创建了这两个函数,它们应该像 PHP 那样工作。

public static String sumchars(char c1, char c2) {
    return (char)((int)c1 + int(c2));
}

public static String subchars(char c1, char c2) {
    return (char)((int)c1 -+ int(c2));
}

似乎 PHP 函数 chr() 知道如何处理超出 ASCII 范围(大于 255)和负数(小于 0)的结果。在 Java 中发生的情况并不相同(我只是转换整数结果而不是函数)。我知道我可以为此创建一个简单的函数,但我想知道是否已经有一个。我希望这些功能非常快,我更愿意使用已经实现的东西,而不是我创建的功能。

提前感谢您的建议!

4

2 回答 2

4

只需添加 256 以确保您没有负值,然后将结果乘以 256 以确保它不大于 256。(或者,使用if else语句)。

public static String sumchars(char c1, char c2) {
    return (char)((((int)c1 + int(c2)) + 256) % 256);
}

public static String subchars(char c1, char c2) {
    return (char)(((int)c1 - int(c2)) + 256) % 256);
}
于 2012-04-06T14:47:11.307 回答
0

您可以使用 Character 类:

http://docs.oracle.com/javase/6/docs/api/java/lang/Character.html

Character.isLetter()
Character.isDigit()
Character.isLetterOrDigit()

然后根据返回的布尔值确定要做什么。

于 2012-04-06T14:47:59.130 回答