2012-10-23 93 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