Вы return
из метода после обработки первого символа.Давайте изменим ваш метод:
public static String getNumber(String phoneNumber, int i)
{
//for (int i = 0; i < phoneNumber.length(); ++i)
{
char ch = phoneNumber.charAt(i);
ch = Character.toUpperCase(ch);
if (ch == 'A' || ch == 'B' || ch == 'C')
return "2";
else if
(ch == 'D' || ch == 'E' || ch == 'F')
return "3";
else if
(ch == 'G' || ch == 'H' || ch == 'I')
return "4";
else if
(ch == 'J' || ch == 'K' || ch == 'L')
return "5";
else if
(ch == 'M' || ch == 'N' || ch == 'O')
return "6";
else if
(ch == 'P' || ch == 'Q' || ch == 'R' || ch == 'S')
return "7";
else if
(ch == 'T' || ch == 'U' || ch == 'V')
return "8";
else if
(ch == 'W' || ch == 'X' || ch == 'Y' || ch == 'Z')
return "9";
}
return "";
}
Обратите внимание, что у него есть параметр int
, и цикл был закомментирован.Теперь давайте обработаем String
:
public static function parseString(String input) {
String output = "";
for (int i = 0; i < input.length; i++) {
output += getNumber(input, i);
}
return output;
}
Обратите внимание, что это очень просто понять.То, что делает его простым, заключается в том, что метод делает одну вещь.getNumber
получает число из String
по заданному индексу.parseString
анализирует String
в соответствии с вашим кодом.Конечно, вы можете изменить начальный String
, если это является целью, используя setChar
, но тогда метод getNumber
должен возвращать char
представление цифр.