2010-04-29 50 views
1

我需要一些幫助和指導,才能顯示拆分字符串。如何按順序顯示解密和拆分的字符串?

讓我說,我有用戶名,密碼,nonceInString。我已經成功地對這些進行了加密和解密。然後我分裂解密的數據。它也完成了。

我想按順序顯示解密的數據。 這樣的事情。

userneme:塞巴斯蒂安
密碼:哈利·波特
現時值:sdgvay1saq3qsd5vc6dger9wqktue2tz *

我嘗試下面的代碼,但它並沒有顯示像我想。
請幫忙。非常感謝。

String codeWord = username + ";" + password + ";" + nonceInString; 
String encryptedData = aesEncryptDecrypt.encrypt(codeWord); 
String decryptedData = aesEncryptDecrypt.decrypt(encryptedData); 
String[] splits = decryptedData.split(";"); 
String[] variables = {"username", "password", "nonce value"}; 
for (String data : variables){ 
    for (String item : splits){ 
     System.out.println(data + ": "+ item); 
    } 
} 

回答

4

您嵌套的,每個邏輯是錯誤的;相反,你需要通過一個索引明確配對的數組中的元素:

for (int i = 0; i < variables.length; i++) { 
    System.out.println(variables[i] + ":" + splits[i]); 
} 

注意,這個假設兩個數組有相同的長度,並拋出一個ArrayIndexOutBoundsException如果splits陣列比variables短陣列。


作爲一個側面說明,對鍵 - 值映射數據結構,你可能想看看java.util.Map

import java.util.*; 

//... 

Map<String,String> map = new HashMap<String,String>(); 
map.put("username", "sebastian"); 
map.put("password", "harrypotter"); 
System.out.println(map); // prints "{username=sebastian, password=harrypotter}" 
System.out.println(map.get("password")); // prints "harrypotter" 
+0

我會先做一個測試:'如果splits.length!= variables.length throw Exception(「輸入格式與期望值不符」)或類似的東西。我有這樣的感覺,將來的數據將來自其他地方:) – extraneon 2010-04-29 07:28:05

+0

@polygenelubricants:非常感謝。有用。 @extraneon:是的,我將來可能會這樣做。謝謝你的建議,以及。 – 2010-04-29 07:35:51

0

這是因爲你的內循環將遍歷變量中每個元素的所有分割值。

我假設你有類似

username .. 
username .. 
username .. 
password .. 
pa.... 
+0

是的。它看起來有點像這樣。 「polygenelubricants」的答案是有效的。 – 2010-04-29 07:29:23