2015-02-11 53 views
0

我有一个名为encryption的类,它表示我的用户在主输入的字符串,然后用我的.encryptMessage()方法加密。我希望将字母表中的字符转换为相应的int值,反之亦然,值为int。我认为我的方法会做到这一点,但它不是以这种方式输出。加密方法不正确输出

问题:如何修复这种方法,使字母chars输出为对应的int值,反之亦然? (即A = 1,B = 2,1 = A,2 = B,等等)

public class Encryption { 

private String message; 

public Encryption(String message) { 
    this.message = message; 
} 

public String encryptMessage() 
{ 
    char messageChar = 0; 

    for (int i = 0; i < message.length(); i++) 
    { 
     messageChar = message.charAt(i); 
     messageChar = Character.toUpperCase(messageChar); 

     if (Character.isLetter(messageChar)) 
     { 
      int charValue = Character.getNumericValue(messageChar); 
      message += charValue; 
     } 

     else if (Character.isDigit(messageChar)) 
     { 
      int messageVal = 0; 
      messageChar = (char) messageVal; 
      message += (char) messageVal; 
     } 

    } 
    return message; 
} 

}

回答

0

Character.getNumericValue不返回你认为它是数值。

java.lang.Character.getNumericValue(char ch)返回指定的Unicode字符所表示的int值 。例如, 字符“\ u216C”(罗马数字50)将返回一个int与50

这里一个 值的片段,将工作

String str = "abcdef"; 
char[] ch = str.toCharArray(); 
for(char c : ch) 
{ 
    int temp = (int)c; 
    int temp_integer = 96; //for lower case 
    if(temp<=122 & temp>=97) 
     System.out.print(temp-96); 
} 

这一个将工作为Capital字母

String str = "DEFGHI"; 
char[] ch = str.toCharArray(); 
for(char c : ch) 
{ 
    int temp = (int)c; 
    int temp_integer = 64; //for upper case 
    if(temp<=90 & temp>=65) 
     System.out.print(temp-temp_integer); 
} 

注意这两个片断来自How to get numeric position of alphabets in java?

被盗
+0

谢谢!我会试试看看它是如何实现的。 – Jason 2015-02-11 01:38:23

+0

另外,我会如何去做,然后以相反的方式?说如果我想把一个整数转换成相应的字母? – Jason 2015-02-11 01:41:08

+0

@Jordan只需添加'temp_integer'而不是减去它,然后输出int值作为char。 – 2015-02-11 01:56:29