我正在尝试用 Java 编写一个字符串反转函数(我知道我可以简单地调用现有函数,但我正在尝试这样做来练习和学习)
public class HelloWorld{
public static void main(String []args){
String s = reverse("abcd");
System.out.println(s);
}
public static String reverse(String str){
int end = str.length() - 1;
int start = 0;
char[] arr = str.toCharArray();
while (start < end)
{
arr[start] = arr[start] ^ arr[end];
arr[end] = arr[start] ^ arr[end];
arr[start] = arr[start] ^ arr[end];
start++;
end--;
}
String ret = new String(arr);
return ret;
}
}
但是,它给了我这些错误:
HelloWorld.java:16: error: possible loss of precision
arr[start] = arr[start] ^ arr[end];
^
required: char
found: int
HelloWorld.java:18: error: possible loss of precision
arr[end] = arr[start] ^ arr[end];
^
required: char
found: int
HelloWorld.java:20: error: possible loss of precision
arr[start] = arr[start] ^ arr[end];
^
required: char
found: int
3 errors
我尝试过像这样的类型转换
arr[end] = (char) arr[start] ^ arr[end];
没有解决问题。 这是怎么回事?
最佳答案
I have tried casting like
arr[end] = (char) arr[start] ^ arr[end];
您只转换第一个char
,而不转换另一个,从而为您提供 char 的整数/小数值
中的xor
结果不是 char 值
本身。
示例:
相反,您可以将其括在括号中并将操作结果转换为 char。
(char) (arr[start] ^ arr[end]);
关于使用 xor 运算符时 Java 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196565/