2014-01-06 45 views
0

我正在返回类型函数加密一些字符串功能在java中

我的代码是

public String encrypt(char x) 
{ 
    String enc = ""; 
    switch(x) 
    { 
     case 'A' : enc = "B"; 
     break; 
     case 'a' : enc = "x"; 
     break; 
     case 'B' : enc = "C"; 
     break; 
     case 'b' : enc = "w"; 
     break; 
     case 'C' : enc = "D"; 
     break; 
     case 'c' : enc = "v"; 
     break; 
     case 'D' : enc = "E"; 
     break; 
     case 'd' : enc = "u"; 
     break; 
     case 'E' : enc = "F"; 
     break; 
     case 'e' : enc = "t"; 
     break; 
     case 'F' : enc = "G"; 
     break; 
     case 'f' : enc = "s"; 
     break; 
    } 
    return(enc); 
} 

public String encryptString(String input) 
{ 
    String Encryption = ""; 
    int length = input.length(); 
    int charVal = 0; 
    for (charVal = 0; charVal<=length;charVal++) 
    { 
     char encChar = input.charAt(charVal); 
     String encrypted = encrypt(encChar); 
     Encryption = Encryption+encrypted+""; 
    } 
    return (Encryption); 
} 

我无法使用encryptString()用的JOptionPane的showInputDialog()

+4

你是什么意思,你不能使用该功能?它是否会抛出异常? – Hrishikesh

回答

2
for (charVal = 0; charVal<=length;charVal++) 

应该

for (charVal = 0; charVal<length;charVal++)

否则input.charAt(charVal);将抛出StringIndexOutOfBoundsException最后一次迭代。

但是你可以让你的代码中使用StringBuilder更高效:

public String encryptString(String input){ 
     StringBuilder sb = new StringBuilder(); 
     for (char c : input.toCharArray()) 
      sb.append(encrypt(c)); 
     return sb.toString(); 
} 

几点注意事项:

  • encrypt(char x)方法的返回类型可以是char
  • 注意JOptionPane.showInputDialog回报null如果用户取消输入
+1

谢谢, 它的工作 –