2013-09-25 64 views
0

当我尝试两个部分打破我得到这个错误消息(与“断点”字符“@”)“异常线程‘main’java.lang.ArrayIndexOutOfBoundsException:0” Java错误

  • part_fixed
  • part_user

    一个密钥“最后键”保存为字符串。

    如图控制台在以下
     service_codeEncrypted_key = new SecretKeySpec(service_codeEncrypted, 0, 8, "DES"); 
    
    
         System.out.println(""); 
         System.out.println("Secret code as secret key :" + service_codeEncrypted_key); 
         System.out.println(""); 
         String final_key = "service_codeEncrypted_key";//key has the form [email protected] 
         String[] parts = final_key.split("@") ; 
         String part_fixed = parts[0]; // xxx.xxx.xxx.xxx 
         String part_user = parts[1]; // yyyy 
         System.out.println("");    
         System.out.println("Service Code decrypted : " + new String(service_codeDecrypted)); // Print the decrypted Text 
         System.out.println(""); 
         // System.out.println("Code for the card : " + part_user); // Print the decrypted Text   
         System.out.println("Finish!!!"); // Print the decrypted Text 
         System.out.println("-----------------------------------------------------------------------------------"); // Print the decrypted Text 
         System.out.println(""); 
         System.out.println(""); 
    

错误:

异常在线程 “主要” java.lang.ArrayIndexOutOfBoundsException:0 在JEncrytion.main(JEncrytion.java:182)

其中第182行是:String part_fixed = parts [0];

实际键的形式为[email protected],我希望所有的x都在一个部分中,而所有的y都在第二个中。

任何想法?

+0

你为什么不打印'parts'的长度(的System.out.println(parts.length);)访问数组元素之前,看看有多少元素那里? – Jiji

回答

1

String final_key = "service_codeEncrypted_key"; //这里的问题是

具有以下

String final_key = service_codeEncrypted_key; 
更换

并且认为这个也是

String part_fixed =""; 
    String part_user =""; 
    if(parts!=null){ 
     part_fixed = parts[0]; // xxx.xxx.xxx.xxx 
     part_user = parts[1]; // yyyy 
    } 
+0

Thanx队友,这实际上是问题,这当然创造了另一个(我很愚蠢的事情,密钥可以像一个字符串很容易保存)。 Thanx再次,愚蠢的错误,我知道。 – kiko77

+0

@ kiko77然后你应该接受这个答案。 –

+0

Thnx .... @SilviuBurcea – Prabhakaran

0

final_key(value =“service_codeEncrypted_key”)字符串不包含@,因此split的结果将是单个元素的数组,即原始字符串。这里提到所以accesing数组中的第二个元素:

parts[1]; 

将抛出一个ArrayIndexOutOfBoundsException

在你的代码的逻辑问题是,你想要的service_codeEncrypted_key变量分配给final_key而是你做的字符串分配。因此,作为由在他的回答中提到普拉巴卡兰,替换此:

String final_key = "service_codeEncrypted_key"; 

String final_key = service_codeEncrypted_key; 
+0

Thanx Juned,刚才提到我将secter key的名字保存为一个字符串,而不是密钥本身! – kiko77

0

这是正确的,您的密钥不包含'@'符号。

你需要编写这样的代码。

if(final_key.contains("@")){ 
String[] parts = final_key.split("@") ; 
    String part_fixed = parts[0]; // xxx.xxx.xxx.xxx 
    String part_user = parts[1]; // yyyy 
} 
+0

有用... thanx! – kiko77

+0

欢迎您! – Ketan

0
String final_key = "service_codeEncrypted_key"; 

不包含@字符等等parts[]没有元素。

尝试使用

String[] parts = service_codeEncrypted_key.split("@"); 
+0

谢谢!你的建议完全是正确的方向,我只是得到了 JEncrytion.java:181:找不到符号 符号:方法split(java.lang.String) 位置:接口javax.crypto.SecretKey String [] parts = service_codeEncrypted_key.split( “@”); 错误,因为(当然)这是一个秘密密钥,而不是一个字符串。我会尝试先将其转换。 – kiko77

相关问题