加密方法无法正确输出

时间:2015-02-11 01:25:23

标签: java class loops methods int

我有一个名为encryption的类,它表示我的用户在main中输入的字符串,然后由我的.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;
}

}

1 个答案:

答案 0 :(得分:0)

Character.getNumericValue不会返回您认为的数值。

  

java.lang.Character.getNumericValue(char ch)返回int值   指定的Unicode字符表示。例如,   字符'\ u216C'(罗马数字五十)将返回一个带有的字符   价值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?

中窃取的