Вложенный цикл while внутри цикла do-while, который выдает неверный вывод

Предполагается, что эта программа выведет соответствующие числа в строку, введенную пользователем, и должна позволить пользователю продолжать вводить строки, пока они не введут пустую строку. Часть цикла, которую мне удалось получить, и первый выход на первый вход правильный, но проблема у меня заключается в том, что начиная со второго входа, программа показывает только первый выход. Что-то вроде этого:

Введите свой телефонный номер в письмах: позвонить Bome (вход)

Ваш номер телефона: 225-52663 (выход)

Введите свой номер телефона в письмах: получить кредит

Ваш номер телефона: 225-52663

если есть кто-нибудь, кто может помочь мне решить эту проблему, я буду очень благодарен!

 String teleLetter,teleNum=""; 
        int i=0;

do
{       
     System.out.println("Enter your telephone number in letters: "); //ask user 
     to input telephone number in letter
     teleLetter = keyboard.nextLine();
        char teleChar; 
       while(i<teleLetter.length()) //condition to read till end of teleletter then stop program
       { 
                 teleChar = teleLetter.charAt(i); //take all the char individually from string



            switch(teleChar) //ensure that each letter correspond to a number
            {
                //to ensure lowercase and uppercase
                 case 'a':  
                 case 'A':
                 case 'b':
                 case 'B':
                 case 'c':
                 case 'C':
                        teleNum = teleNum+2; //assign telenum
                         break;
                case 'd':
                case 'D':
                case 'e':
                case 'E':
                case 'f':
                case 'F':
                         teleNum=teleNum+3;
                         break;
                case 'g':
                case 'G':
                case 'h':
                case 'H':
                case 'i':
                case 'I':
                        teleNum=teleNum+4;
                        break;
                case 'j':
                case 'J':
                case 'k':
                case 'K':
                case 'l':
                case 'L':
                        teleNum=teleNum+5;
                        break;
                case 'm':
                case 'M':
                case 'n':
                case 'N':
                case 'o':
                case 'O':
                        teleNum=teleNum+6;
                        break;
                case 'p':
                case 'P':
                case 'q':
                case 'Q':
                case 'r':
                case 'R':
                case 's':
                case 'S':
                        teleNum=teleNum+7;
                        break;
                case 't':
                case 'T':
                case 'u':
                case 'U':
                case 'v':
                case 'V':
                        teleNum=teleNum+8;
                        break;
                case 'w':
                case 'W':
                case 'x':
                case 'X':
                case 'y':
                case 'Y':
                case 'z':
                case 'Z':
                        teleNum=teleNum+9;
                        break;
                case ' ':
                        break;
                default: 
                    System.out.println("Invalid digit!");
                    break;


            }            



            if(i==2) //at the second loop 
            {
                teleNum=teleNum+'-';
            }
             i++;

       }


      if(teleLetter.length() == 0) //if the input is null, print invalid message
       {
           System.out.println("Invalid as nothing is entered!");
       }
       else
       {

       System.out.println("Your telephone number is: "+teleNum); // output telephone number to user
       }



}while(!teleLetter.isEmpty());

    }

    }

1 ответ

Решение

Вы не сбрасываете 'i', что приводит к сбою вашего второго цикла while, поскольку 'i' уже>> 'teleLetters.length()'. Попробуйте это так:

if(teleLetter.length() == 0) //if the input is null, print invalid message
{
   System.out.println("Invalid as nothing is entered!");
}
else
{
   System.out.println("Your telephone number is: "+teleNum); // output telephone number to user
   i = 0;
}
Другие вопросы по тегам