在Java中求和并减去字符,并始终在ASCII范围内得到结果

时间:2012-04-06 14:41:35

标签: java ascii sum chars subtraction

我创建了两个函数,它们对两个字符的数值进行求和,并在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中不一样(其中我只是转换整数结果而不是函数)。我知道我可以创建一个简单的功能,但我想知道是否已经有一个。我希望这些函数非常快,我宁愿使用已经实现的东西而不是我创建的函数。

提前感谢您的推荐!

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以使用Character类:

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

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

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