I’m working on a program for the Java programming class I’m taking. I’m having trouble getting it to work right. Anyone know anything about Java and think you can possibly help me?
So, a sample result of running the program is below:
Please enter the encrypted phone number: 4348885548
Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.charAt(Unknown Source)
at PhoneNumberDecrypt.main(PhoneNumberDecrypt.java:137)
and down there is the code.
I’m stumped.
/*
Program name: PhoneNumberDecrypt.java
Author: Robert Zygala
Date: 11/15/2005
Assignment: Java 5 Illuminated page 363 # 72
*/
import java.util.Scanner;
public class PhoneNumberDecrypt
{
public static void main( String [] args )
{
/////////////////////////////////////////////////////////////////////////////////////////////////////////
boolean validPhoneNumber;
int digitsInNumber, i;
String phoneNumber, decryptedPhoneNumber = “”, decryptedAreaCode = “”, decryptedPrefix = “”,
decryptedSuffix = “”, decrypting;
char nextCharacter;
Scanner scan = new Scanner( System.in );
/////////////////////////////////////////////////////////////////////////////////////////////////////////
do // while( !(validPhoneNumber) )
{
digitsInNumber = 0;
System.out.print( “Please enter the encrypted phone number: “);
phoneNumber = scan.next();
i = 0; //set index to 0 for scanning
//This next section throws away all non-digit characters and “decrypts” digit characters
do
{
nextCharacter = phoneNumber.charAt( i );
switch(nextCharacter)
{
case ‘0’:
decrypting = “8”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘1’:
decrypting = “9”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘2’:
decrypting = “0”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘3’:
decrypting = “1”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘4’:
decrypting = “2”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘5’:
decrypting = “3”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘6’:
decrypting = “4”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘7’:
decrypting = “5”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘8’:
decrypting = “6”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
case ‘9’:
decrypting = “7”;
digitsInNumber++;
decryptedPhoneNumber += decrypting; //adds the newly decrypted digit to decryptedPhoneNumber
break;
default:
decrypting = “0”;//not actually used in program, only included because compiler requires it
break;
} //end switch( nextCharacter)
i++;
}while( digitsInNumber < 10);
for( i = 0; i < 11; i++)
{
if( i <= 2 ) //Takes the first 3 numbers in decryptedPhoneNumber and assigns them to decryptedAreaCode
{
decryptedAreaCode += decryptedPhoneNumber.charAt( i );
}
else if( i > 2 && i <= 5 ) //Takes the next 3 numbers in decryptedPhoneNumber and assigns them to decryptedPrefix
{
decryptedPrefix += decryptedPhoneNumber.charAt( i );
}
else //Takes the last 4 numbers in decryptedPhoneNumber and assigns them to decryptedSuffix
{
decryptedSuffix += decryptedPhoneNumber.charAt( i );
}
}//ends for( int counter = 0; counter < 11; counter++) loop
if( decryptedAreaCode == “212” )
{
validPhoneNumber = true;
System.out.println(“The decrypted phone number is ” + decryptedAreaCode + “-”
+ decryptedPrefix + “-” + decryptedSuffix );
}
else
{
validPhoneNumber = false;
System.out.println( “The decrypted number is not a valid New York phone number”);
}
}while( !(validPhoneNumber) ); //repeats until the output is valid
} //ends main()
}//ends the class