2012-10-23 67 views
-4

我要存储在b中的逆转字符串,没有任何功能。存储反转字符串

公共静态无效的主要(字符串ARGS []) {

BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    String a=br.readLine(); 
    String b; 
    for(int x=0,y=a.length()-1;x<a.length();x++,y--) 
    { 
      b.charAt(x)=a.charAt(y); 
    } 

但我得到这个错误:

    b.charAt(x)=a.charAt(y); 
         ^

要求:可变

发现:值

1错误

你能解释一下它帮我解决这个问题?

+0

您可以*只*分配给l值(“左手价值”)。在Java中,这仅限于*变量*。 'f(“foo”)=“bar”;'在Java中总是无效的,因为'f(“foo”)'是一个表达式(调用一个方法)而不是一个变量,这是错误所需的。 (数组索引也是在Java感变量,这就是为什么字符数组,'炭[]',允许,'charArr [索引] = 'X';') – 2012-10-23 16:20:53

+1

“_Please解决错误_”。不用了,谢谢。 – Baz

+0

@Baz。对你来说这是糟糕的一天吗?是吗?哈哈:) –

回答

0

你可以只是做

String a = "hello"; // the String to be reversed 
String b = ""; // the String to store the reversed String 
for (int i = a.length()-1; i >= 0; i--) { 
    b = b+a.charAt(i); 
} 
4

在=符号旁边,您必须有变量名称,而不是表达式。

但你不能像这样做,因为字符串是不可变的:你应该用另一种结构不是一个字符串,例如StringBuilder,这是特别设计,以实现高效追加字符串建筑:

StringBuilder b = new StringBuilder(); 
    for(int x=0,y=a.length()-1;x<a.length();x++,y--) { 
     b.append(a.charAt(y)); 
    } 
0

初始化b在开始的时候为:String b = "";

,然后只需更换

b.charAt(x)=a.charAt(y); 

b= b+ a.charAt(y); 

这将字符追加在b

0

您也可以扭转它的字符数组如下:

char[] chars = input.toCharArray(); 

for(int i=0; i<chars.length/2; i++) { 
    char temp = chars[i]; 
    chars[i] = chars[chars.length - i - 1]; 
    chars[chars.length - i - 1] = temp; 
} 

String reversed = String.valueOf(chars); 

不过需要注意的不管你选择什么,你都不会因为s而修改字符串本身特林是不可改变的@dystroy建议。

3

反转字符串的最简单方法是使用字符串缓冲区,因为它具有内置反转方法。然后存储字符串缓冲区,您可以将其保存到像这样的变量。

StringBuffer sb = new StringBuffer(a.reverse()); 

sb.toString(); //if you want the result as a string