【问题标题】:Encryption method not outputting correctly加密方法输出不正确
【发布时间】:2015-02-11 01:25:23
【问题描述】:

我有一个名为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;
}

}

【问题讨论】:

    标签: java class loops methods int


    【解决方案1】:

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

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

    这里有一个可以工作的 sn-p

    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);
    }
    

    注意这两个sn-ps是从How to get numeric position of alphabets in java?偷来的

    【讨论】:

    • 另外,我将如何以相反的方式执行此操作?假设我想将一个单独的整数转换成其对应的字母吗?
    • @Jordan 只需添加 temp_integer 而不是减去它,然后将 int 值作为字符输出。
    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多