public static void main(String args[]){
String a="abc";
char temp=0;
for (int i = 0,j=a.length()-1;i<j; i++,j--) {
temp=a.charAt(i);
a.charAt(i)=a.charAt(j);
a.charAt(j)=temp;
}
for (int i = 0,j=a.length()-1;i<j; i++,j--) {
System.out.print(a.charAt(i));
}
}
字符串做反转 思路是字符串第一个和最后个进行交换 但是现在报错a.charAt(i)=a.charAt(j); a.charAt(j)=temp说是应为变量 不太明白这个意思 ;请问这个思路错在哪? (其他方法我知道 我只想知道这个思路错在哪里)
我们先看看charAt的源码
public char charAt(int index) {
if ((index < 0) || (index >= value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
就是就是返回数组下标index的char 元素,比如 String a="abc"; a.charAt(1)--> 'b',这不是一个变量而是一个char 字符
a.charAt(i)=a.charAt(j); ---> 你给一个char 字符赋值 当然不允许
a.charAt(i)=a.charAt(j)
改为
a[i]=a.charAt(j)
了解charAt方法 他是返回字符串对应索引位置的字符,是不可以进行值的修改 替换要把字符串a转换为字符数组cahr[] arr = a.toCharArray() 然后循环这个 最后把值改变 arr[i] = temp
a.charAt(i)是一个从字符串取出来的临时变量,对他赋值并不能修改字符串本身,应该先把字符串同toCharArray转换成字符数组,再进行处理