Вложенный цикл 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;
}