Я чувствую, что я очень близок к решению этой проблемы. При условии, что я хочу преобразовать символ из строки в int, добавьте значение из другого метода (getKey
) к этому номеру, и если результат больше 26, вычтите 26. Затем преобразуйте этот новый int
в его char
, и, наконец, поместите его в конец string
. На данный момент он просто возвращает вход с вычитаемыми пробелами, который на полпути хаха. Интересно, что заменаChar to Int, изменить значение int, вернуться к char и добавить строку
msg.replace(msg.charAt(i), btc); // from the bottom
с
msg += btc;
инициирует бесконечную петлю. Любые советы были бы чрезвычайно оценены!
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.replace' возвращает новый 'String', и не модифицирует исходную. – Berger
Поскольку этот метод и msg + = полагаются на оператор for, чтобы избежать бесконечного повторения, почему использование последнего метода может привести к бесконечному циклу? –
Вы добавляете один символ в msg, затем вы увеличиваете i. Поэтому я никогда не достигнет msg.length(). – Hok