Anybody reading this know much about Java?

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

The Ultimate LiveJournal Obsession Test
Category Your Score Average LJer
Community Attachment 29.03%
There’s something special about you. Every once in awhile, one of your topics gets everyone chatting.
22.46%
MemeSheepage 17.54%
Only trendy when it’s sufficiently entertaining
28.01%
Original Content 54.84%
Using LiveJournal to express a few strong opinions
37.71%
Psychodrama Quotient 4.82%
Warning: Can Flame When Necessary
16.83%
Attention Whoring 9.09%
Low-key and lovin’ it
20.58%

If I had any faith in humanity left, this would have killed it.

http://news.yahoo.com/s/ap/20051108/ap_on_re_us/evolution_debate
The Kanasas School Board has now OFFICIALLY accepted intelligent design

“Supporters of the new standards said they will promote academic
freedom. “It gets rid of a lot of dogma that’s being taught in the
classroom today,” said board member John Bacon, an Olathe Republican.”

It gets RID of dogma being taught in the classroom? THAT’S an interesting interpretation…