2010-04-29 43 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