2016-01-30 101 views
4

我必須編寫一個方法來切換字符串的第一個和最後一個字母。例如,字符串「java」會變成「aavj」。在Java中切換字符串的第一個和最後一個字母?

這是我到目前爲止有:

import javax.swing.JOptionPane; 

public class printTest { 
    public static void main(String[] args) { 
     String password; 
     password = JOptionPane.showInputDialog("Please input your password"); 
     int length = password.length(); 
     String firstChar = password.substring(0, 1); 
     String lastChar = password.substring(length - 1); 

     password = lastChar + password + firstChar; 
     JOptionPane.showMessageDialog(null, password); 
    } 
} 

與該代碼我得到以下輸出「ajavaj」當我輸入的「java」,所以我怎麼能解決這個問題?我需要切換前兩個字母,仍然有字符串的中間。我該怎麼辦?

回答

7

你需要在這條線串密碼:

password = lastChar + password.substring(1, length-1) + firstChar; 
+0

太謝謝你了!這工作完美。 – logonin

1
char c[] = password.toCharArray(); 
char temp = c[0] 
c[0] = c[password.length-1]; 
c[password.length-1] = temp; 

你去那裏,交換這兩個字母。 c[0]將是您的第一個字母,您將它存儲在temp變量中,然後修改c[0](您的第一個字母)的值與c[password.length-1](最後一個字母)中的值,然後使用temp中的一個存儲修改此值變量

+0

我編輯你的答案,因爲聲明這樣的字符數組是不鼓勵的 – Idos

+1

@Idos:我回滾了你的編輯,因爲它在事情的宏偉計劃中最終沒什麼問題。 – Makoto

+0

嗯,我想。 cool – Idos

3

通過執行password = lastChar + password + firstChar;您將原始密碼字符串與其他兩個字符串連接起來,即lastChar & firstChar。通過這樣做,你實際上會得到一個新的字符串lastCharfirstChar追加和不交換。

此外,字符串是不可變的,每次你試圖操縱它時,你最終都會創建一個新的字符串。您應該使用char陣列來避免此問題。

嘗試這段代碼:

import javax.swing.JOptionPane; 
public class printTest 
{ 
    public static void main(String[] args) 
    { 
      /* Capture Password */ 
      String password = JOptionPane.showInputDialog("Please input your password"); 
      char[] pass = password.toCharArray(); 

      /* Swap Logic */ 
      char temp = pass[0]; 
      pass[0] = pass[pass.length - 1]; 
      pass[pass.length - 1] = temp; 

      /* Show MessageDialog */ 
      JOptionPane.showMessageDialog(null, new String(pass)); 
    } 
} 
+0

解釋爲什麼你認爲這段代碼是正確的,以及它爲什麼起作用。 – Makoto

+0

@Markoto增加了額外的信息。爲什麼它低調? – user2004685

+0

你對'char'數組的解釋沒有意義,因爲你正在創建一個新的字符串*無論如何*。可以這麼說,你正在創建一個更少的String實例,但在這裏使用'char'數組並不足夠令人信服。 – Makoto

1

你得到的第一個字符的方式是正確的,但不是中間或最後。下面是顯示所有這三種情況的解決方案:

String password = "123456789"; 
    int length = password.length(); 

    String firstChar = password.substring(0, 1); 
    String middle = password.substring(1, length - 1); 
    String lastChar = password.substring(length - 1, length); 

    password = lastChar + " " + middle + " " + firstChar; 
    System.out.println(password); 

這將打印:

9 2345678 1 
2

我想這應該做的伎倆:

import javax.swing.JOptionPane; 
    public class printTest 
    { 
    public static void main(String[] args) 
    { 
    String password; 
    password = JOptionPane.showInputDialog("Please input your password"); 
    int length = password.length(); 
     String password_changed = password.substring(1, password.length() - 1); 
     String firstChar = password.substring(0,1); 
     String lastChar = password.substring(length - 1); 



     password = lastChar + password_changed + firstChar; 
     JOptionPane.showMessageDialog(null, password); 
    } 
    } 

您做出額外的字符串(在本例password_changed),以便刪除密碼變量的第一個和最後一個字母。您可以使用該新變量在最後更改密碼變量。

1

並不比其他的答案太大的不同,但另一種方式:

password = password.charAt(password.length() - 1) 
      + password.substring(1, password.length() - 1) 
      + password.charAt(0); 
相關問題