我正在使用单词加密方法,所以它应该使用String plainWord和String键作为参数。
现在,当我试图获取加密的字符并将它们存储在一个字符串字中并返回由这些加密字符组成的字时,但我找不到办法来做到这一点。
这是我使用的方法:
public static String encryptWord (String plainWord, String key) {
int pword;
int k;
char cipherCH;
String cipherWord = null;
for (int i = 0; i < plainWord.length(); i++) {
pword = Secret_Code_Library.getDigit(plainWord.charAt(i));
k = Secret_Code_Library.getDigit(key.charAt(i));
cipherCH = Secret_Code_Library.getLetter((pword+k)%25);
for (int j = 0; j < plainWord.length(); j++) {
cipherWord.charAt(j) = Character.toString(cipherCH);
}
}
return cipherWord;
}
现在错误出现在该行“cipherWord.charAt(j)= Character.toString(cipherCH);”那么如何将加密字符(cipherCH)存储在加密字(cipherWord)中?
这是getLetter和getDigit方法:
public class Secret_Code_Library {
//LETTERS is a reference Class variable contains the alphabetic characters from A to Z in Upper-case
public static final char [] LETTERS={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
/* getLetter is a class method that has one argument which is an integer number.
* It returns the corresponding ccharacter to the given integer argument.
*/
public static char getLetter(int digit){
return LETTERS[digit]; }
/* getDigit is a class method that has one argument which is a character.
* It returns the corresponding number to the given character argument.
*/
public static int getDigit(char ch){
int digit=0;
switch (ch){
case 'A': digit=0; break; case 'B': digit=1; break; case 'C': digit=2; break;
case 'D': digit=3; break; case 'E': digit=4; break; case 'F': digit=5; break;
case 'G': digit=6; break; case 'H': digit=7; break; case 'I': digit=8; break;
case 'J': digit=9; break; case 'K': digit=10; break; case 'L': digit=11; break;
case 'M': digit=12; break; case 'N': digit=13; break; case 'O': digit=14; break;
case 'P': digit=15; break; case 'Q': digit=16; break; case 'R': digit=17; break;
case 'S': digit=18; break; case 'T': digit=19; break; case 'U': digit=20; break;
case 'V': digit=21; break; case 'W': digit=22; break; case 'X': digit=23; break;
case 'Y': digit=24; break; case 'Z': digit=25; break;
}// switch
return digit;
}
}
答案 0 :(得分:1)
两种解决方案:
创建一个char数组,设置它的每个元素,然后从这个char数组创建一个String(这就像你想要做的那样);
使用StringBuilder,追加每个字符,然后将其转换为String。
RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC]
RewriteCond %{THE_REQUEST} !/menu [NC]
RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L,NE]
不是字符串。没什么。即使它是,一个String是不可变的:你不能修改一个字符串。即使你可以,使用返回字符以设置字符的方法也行不通。您需要一种方法,例如null
。
请注意,最“惯用”或“传统”的方式是第二种方式。很少提前知道String将包含多少个字符,并且根据需要增加一个STringBuilder是很方便的。