2013-04-23 72 views
0

我一直在試圖製作一個程序,允許我加密用戶名和密碼並打印結果。我可以使它工作,但我想將循環中出現的字符排序爲單個字符串,以便於管理。有什麼建議?Java:將字符組轉換爲單個字符串

System.out.println("\nYour encrypted username is "); 

    for(char c : namech) 
    { 
     int temp = (int)c; 
     int namecode = 0; 

     //makes the characters w,x,y,z loops back to the start of the alphabet 
     if(temp<=90 & temp>=65) 
     { 
      namecode = temp+4; 

      if(namecode == 91) 
      { 
       namecode = 65; 
      } 
      else if(namecode == 92) 
      { 
       namecode = 66; 
      } 
      else if(namecode == 93) 
      { 
       namecode = 67; 
      } 
      else if(namecode == 94) 
      { 
       namecode = 68; 
      } 

      int i = namecode; 

      char d = (char)i; 


      System.out.print(d); 



     } 
+0

你會使用整數,而不是在源代碼中使用字符文字的任何理由提到?後者會使生活*更簡單... – 2013-04-23 19:17:45

+0

您可以將一個字符附加到一個字符串.. – Maroun 2013-04-23 19:18:10

回答

1

我會使用StringBuilder並在加密時追加每個字符。簡單而有效的連接。 IE瀏覽器。

StringBuilder sb = new StringBuilder(); 

for (char c : namech) 
{ 
    // ... your code was here 
    sb.append(d); 
} 

System.out.println(sb.toString()); 
3

我想出來的循環成一個字符串

最簡單的方法字符排序可能是把整個事情變成char[],然後再轉換回的字符串:

char[] chars = namech.toCharArray(); 
for (int i = 0; i < chars.length(); i++) { 
    chars[i] = obfuscateCharacter(chars[i]); 
} 
String obfuscated = new String(chars); 

...其中obfuscateCharacter基本上是你目前的循環體,但提取到處理一個的方法單個字符,這是更容易測試等(我拒絕把它作爲encryptCharacter,讓安全:)

0
String result = null; 
int j = 91; 
int k = 92; 

result = String.valueOf((char)j); 
result += String.valueOf((char)k); 

順便說一句,這看起來像做使用switch語句,而不是多一個完美的地方的印象如果,否則如果...