为什么将 int 转换为 Character 包装器对象后缀为每个字符前的 '\u000'?
Why does converting an int to Character wrapper object suffix '\u000' before each character?
以下是查找两个字符串之间唯一不同的附加字母表的解决方案。
public char findTheDifference(String s, String t) {
int sSum = 0;
int tSum = 0;
for(int i = 0; i < s.length(); i++){
sSum = sSum + Character.getNumericValue(s.charAt(i));
}
for(int j = 0 ; j < t.length(); j++){
tSum = tSum + Character.getNumericValue(t.charAt(j));
}
return (char)(tSum-sSum);
}
它returns '\u000e' 而不是 'e'.
示例输入:
String1 = "abcd"
String2 = "abecd"
输出="e"
问题:
1) 为什么返回'\u000e'?我知道如果我在 for loops
中删除 Character.getNumericValue
,我会得到 'e'。但我想了解为什么使用它会添加 \u000?
问题是 Character.getNumericValue()
使用特定规则将字符转换为数字 explained here。
特别是,您使用的字母 a
、b
、c
、d
、e
会转换为数字 10 , 11, 12, 13, 14 - 此方法假定您希望它们是十六进制等数字系统中的数字。
以下是查找两个字符串之间唯一不同的附加字母表的解决方案。
public char findTheDifference(String s, String t) {
int sSum = 0;
int tSum = 0;
for(int i = 0; i < s.length(); i++){
sSum = sSum + Character.getNumericValue(s.charAt(i));
}
for(int j = 0 ; j < t.length(); j++){
tSum = tSum + Character.getNumericValue(t.charAt(j));
}
return (char)(tSum-sSum);
}
它returns '\u000e' 而不是 'e'.
示例输入:
String1 = "abcd"
String2 = "abecd"
输出="e"
问题:
1) 为什么返回'\u000e'?我知道如果我在 for loops
中删除 Character.getNumericValue
,我会得到 'e'。但我想了解为什么使用它会添加 \u000?
问题是 Character.getNumericValue()
使用特定规则将字符转换为数字 explained here。
特别是,您使用的字母 a
、b
、c
、d
、e
会转换为数字 10 , 11, 12, 13, 14 - 此方法假定您希望它们是十六进制等数字系统中的数字。