【发布时间】:2014-08-08 05:30:03
【问题描述】:
我正在尝试用 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];
没有解决问题。 这是怎么回事?
【问题讨论】:
标签: java bit-manipulation precision