この問題を解決するのに非常に近いと感じます。文字列を指定して文字列からintに変換し、別のメソッド(getKey
)の値をこの数値に追加し、結果が26より大きい場合は26を減算します。次に、この新しいint
をその数値に変換します。 char
とし、最終的にをstring
の末尾に置きます。現時点では、半角スペースを引いた入力を返します。intをCharに変換し、int値を変更してからcharに戻し、文字列に追加します。
msg += btc;
と
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'は新しい' STRING'を返し、オリジナルのものを変更しないmsg.replace' '、不変であると
msg.replace(msg.charAt(i), btc);
を交換してください。 – Bergerそのメソッドとmsg + =は無限の繰り返しを避けるためにforステートメントに依存しているので、なぜ後者のメソッドを使用すると無限ループが発生するのでしょうか? –
msgに1つのcharを追加した後、iを増やします。だから私は決してmsg.length()に到達しません。 – Hok