Java Char到Int,更改Int值,返回Char,并添加到字符串
我觉得我非常接近解决这个问题。如果提供一个字符串,我想将字符串中的字符转换为int,将另一个方法(Java Char到Int,更改Int值,返回Char,并添加到字符串,java,encryption,caesar-cipher,Java,Encryption,Caesar Cipher,我觉得我非常接近解决这个问题。如果提供一个字符串,我想将字符串中的字符转换为int,将另一个方法(getKey)中的值添加到此数字,如果结果大于26,则减去26。然后,将这个新的int转换为它的char,最后将该char放在字符串的末尾。到目前为止,它只是返回减去空格的输入,这是一半的地方哈哈。 有趣的是 msg.replace(msg.charAt(i), btc); // from the bottom 与 启动无限循环。任何建议都将不胜感激 String msg = "";
getKey
)中的值添加到此数字,如果结果大于26,则减去26。然后,将这个新的int
转换为它的char
,最后将该char
放在字符串的末尾。到目前为止,它只是返回减去空格的输入,这是一半的地方哈哈。
有趣的是
msg.replace(msg.charAt(i), btc); // from the bottom
与
启动无限循环。任何建议都将不胜感激
String msg = "";
int key;
int cnum;
for(int i = 0; i< message.length();i++){
if(Character.isLetter(message.charAt(i))){
msg += (message.charAt(i));
}
}
for(int i = 0; i< msg.length(); i++){
char ch = msg.charAt(i);
key = getKey();
cnum = (int)ch + key;
if(cnum > 26){
cnum -= 26;
}
char btc = (char)cnum;
msg.replace(msg.charAt(i), btc);
}
return msg;
String msg=”“;
int键;
国际cnum;
对于(int i=0;i26){
cnum-=26;
}
char btc=(char)cnum;
消息替换(消息字符(i),btc);
}
返回味精;
您的问题已经到了第一线
msg.replace(msg.charAt(i),btc)强>
由于字符串是不可变的,String.replace()将返回一个新字符串,而不会修改现有字符串
我建议您使用StringBuilder(),附加被替换的字符或附加现有字符。Replacemsg.Replace(msg.charAt(I),btc)代码>
带有msg=msg.replace(msg.charAt(i),btc)
String
是不可变的,msg.replace
返回一个新的String
,并且不修改原始字符串。由于该方法和msg+=都依赖for语句来避免无限重复,为什么使用后一种方法会导致无限循环?您向msg添加一个字符,然后递增i。因此,我永远不会到达msg.length()。
String msg = "";
int key;
int cnum;
for(int i = 0; i< message.length();i++){
if(Character.isLetter(message.charAt(i))){
msg += (message.charAt(i));
}
}
for(int i = 0; i< msg.length(); i++){
char ch = msg.charAt(i);
key = getKey();
cnum = (int)ch + key;
if(cnum > 26){
cnum -= 26;
}
char btc = (char)cnum;
msg.replace(msg.charAt(i), btc);
}
return msg;