1.

 /* Angewandte Mathematik, SS09, IFB 2C
  * ACM Problem #10921 (Find the Telephone)
  * Link: http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=21&page=show_problem&problem=1862
  *
  * @author Dennis Wilfert
  * @author Johann Studt
  * @version 1.0, 04/04/2009
  *
  * Status : Accepted
  * Runtime: 0.100
  */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String line = reader.readLine();
        
        while(line != null){
            
            // Aktielle Zeile als char-Array speichern
            char[] chars = line.toCharArray();
            //Laenge des Arrays
            int length = chars.length;
            
            // Durch das Array laufen
            for(int i = 0; i < length; i++){
                
                //Aktuelles Zeichen
                char chr = chars[i];
                
                // Werte 0, 1 oder - unveraendert ausgeben
                if(chr == '0' || chr == '1' || chr == '-')System.out.print(chr);
                
                // Werte zwischen A und Z durch die jeweilige Zahl ersetzen
                else{
                    switch(chr){
                        case 'A':
                            System.out.print(2);
                            break;
                        case 'B':
                            System.out.print(2);
                            break;
                        case 'C':
                            System.out.print(2);
                            break;
                        case 'D':
                            System.out.print(3);
                            break;
                        case 'E':
                            System.out.print(3);
                            break;
                        case 'F':
                            System.out.print(3);
                            break;
                        case 'G':
                            System.out.print(4);
                            break;
                        case 'H':
                            System.out.print(4);
                            break;
                        case 'I':
                            System.out.print(4);
                            break;
                        case 'J':
                            System.out.print(5);
                            break;
                        case 'K':
                            System.out.print(5);
                            break;
                        case 'L':
                            System.out.print(5);
                            break;
                        case 'M':
                            System.out.print(6);
                            break;
                        case 'N':
                            System.out.print(6);
                            break;
                        case 'O':
                            System.out.print(6);
                            break;
                        case 'P':
                            System.out.print(7);
                            break;
                        case 'Q':
                            System.out.print(7);
                            break;
                        case 'R':
                            System.out.print(7);
                            break;
                        case 'S':
                            System.out.print(7);
                            break;
                        case 'T':
                            System.out.print(8);
                            break;
                        case 'U':
                            System.out.print(8);
                            break;
                        case 'V':
                            System.out.print(8);
                            break;
                        case 'W':
                            System.out.print(9);
                            break;
                        case 'X':
                            System.out.print(9);
                            break;
                        case 'Y':
                            System.out.print(9);
                            break;
                        case 'Z':
                            System.out.print(9);
                            break;
                    }
                }
                
            }
            System.out.println();            
            line = reader.readLine();
        }


    }

}

2.

/**
 * Angewandte Mathematik, SS09, IFB 2C 
 * ACM Problem: Find the Telephone (10921)
 * @author Christian Mitterreiter
 * @author Rolf Luigs
 * @version 1.0, 04/16/2009
 * Status : Accepted
 * Runtime: 0.190
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {


    public static int code(String in) {
        int offset = 0;
        String [] letter = new String[] {"ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
        for(int i = 0; i<letter.length;i++) {           //ließt jeden Buchstabenblock einzeln ein
            String tmp = letter[i];
            for(int j = 0; j<tmp.length(); j++) {       //einzelne Buchstaben des jeweiligen Blocks werden gelesen und überprüft,
                String buchstabe = tmp.charAt(j) + "";  //in welchem Block der Buchstabe zu finden ist
                if(buchstabe.equals(in)) {
                    offset = i+2;  //die entsprechende Taste auf dem Telefon wird bestimmt
                    break;
                }
            }
        }
        return offset;
    }
   
   
    public static void main(String[] args) throws IOException {
       
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
       
        while(input!=null) {
           
            for(int i = 0; i<input.length();i++) {
               
                if(input.charAt(i) >= 'A' && input.charAt(i) <= 'Z')
                    System.out.print(code(input.charAt(i)+""));
               
                else {
                    if((input.charAt(i) >= '0' && input.charAt(i) <= '9') || (input.charAt(i) == '-') ||(input.charAt(i) == ' ' ))
                        System.out.print(input.charAt(i));
                }
            }
            input = br.readLine();
            if(input!= null) System.out.println();
            else System.out.print("\n");
        }
        br.close();
    }
}