Замена символов в строке на число

Я пишу код, который будет декодировать 10-значный номер телефона, содержащий буквы во всех числах. то есть 1-800-iloveny будет преобразовано в 1-800-4568369. Пока столкнулся только с одной проблемой, но есть два вопроса. Правильно ли мои операторы if() преобразуют текущий char в строке в int? Тогда основная проблема, с которой я сталкиваюсь, заключается в том, что мой код не добавит преобразованные символы в новую строку, которая затем выведет декодированный номер телефона (при условии, что я преобразовал их правильно).

class PhoneNumber
{
String phoneNumber;

public PhoneNumber(String num)
{
    phoneNumber = num;
}

public String decodePhoneNumber()
{
    phoneNumber = phoneNumber.toLowerCase();
    String decodedNumber = "";

    for(int cnt = 0; cnt < phoneNumber.length();cnt++)
    {
       char ch = phoneNumber.charAt(cnt);
       if((ch=='a')||(ch=='b')||(ch=='c'))
       {
           ch = 2;
       }
       else if((ch=='d')||(ch=='e')||(ch=='f'))
       {
           ch = 3;
       }
       else if((ch=='g')||(ch=='h')||(ch=='i'))
       {
           ch = 4;
       }
       else if((ch=='j')||(ch=='k')||(ch=='l'))
       {
           ch = 5;
       }
       else if((ch=='m')||(ch=='n')||(ch=='o'))
       {
           ch = 6;
       }
       else if((ch=='p')||(ch=='q')||(ch=='r')||(ch=='s'))
       {
           ch = 7;
       }
       else if((ch=='t')||(ch=='u')||(ch=='v'))
       {
           ch = 8;
       }
       else if((ch=='w')||(ch=='x')||(ch=='y')||(ch=='z'))
       {
           ch = 9;
       }

       decodedNumber = decodedNumber + ch;
    }
    return decodedNumber;
}
}

и тогда пример введенной строки будет выглядеть следующим образом:

public class TestPhoneNumber
{
public static void main(String[] args)
{
    PhoneNumber ph1 = new PhoneNumber("1-800-ILOVENY");
    System.out.println("Decoded phone number: " + ph1.decodePhoneNumber());
}
}

Однако конечный результат выглядит так: Расшифрованный номер телефона: 1-800-


person Ryan Sisson    schedule 09.05.2013    source источник


Ответы (1)


int и char разные. Вы должны использовать '2' вместо 2 и т. д.

person zw324    schedule 09.05.2013
comment
Спасибо, это была проблема. Приму, когда позволит. - person Ryan Sisson; 09.05.2013