我有一个名为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;
}
}
答案 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?
中窃取的