Ich fühle, dass ich extrem nahe an der Lösung dieses Problems bin. Wenn ich eine Zeichenfolge bereitstellen möchte, möchte ich das Zeichen von der Zeichenfolge in ein int konvertieren, einen Wert von einer anderen Methode (getKey
) zu dieser Zahl hinzufügen, und wenn das Ergebnis größer als 26 ist, subtrahieren Sie 26. Dann konvertieren Sie diese neue int
in seine char
, und schließlich das char
am Ende einer string
platzieren. Ab sofort gibt es einfach die Eingabe mit Leerzeichen subtrahiert, die Hälfte ist da haha. Interessanter ,Char to Int, int-Wert ändern, zurück zu char, und zu einer Zeichenfolge hinzufügen
msg.replace(msg.charAt(i), btc); // from the bottom
mit
msg += btc;
initiiert eine Endlosschleife. Jeder Rat würde sehr geschätzt werden!
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' ist unveränderlich,' msg.replace' ein neues 'String' zurückkehrt, und das Original nicht ändern. – Berger
da sowohl diese Methode als auch msg + = auf die for-Anweisung angewiesen sind, um unendliche Wiederholungen zu vermeiden, warum könnte die Verwendung der letzteren Methode eine Endlosschleife verursachen? –
Sie fügen ein Zeichen zu msg hinzu, dann erhöhen Sie i. Also werde ich niemals msg.length() erreichen. – Hok