This program is supposed to output the corresponding numbers to the string that the user have inputted and supposed to allow the user to keep on entering strings till they entered an empty string. The loop part I have managed to get and the first output to the first input is correct but the problem I have is that from the second input onward, the program only shows the first output. Something like this:
Enter your telephone number in letters: call bome (input)
Your telephone number is: 225-52663 (output)
Enter your telephone number in letters: get loan
Your telephone number is: 225-52663
if there's anyone that can help me solve this problem, I will be very thankful!
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());
}
}
You do not reset 'i', that causes your second while loop to fail directly as 'i' is already >= 'teleLetters.length()'. Try it this way:
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;
}