2015-02-11 48 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