L'ho fatto con il metodo:
public void sostituzione(char frase, int chiave){
		
		while(frase >= 0){
			frase++;
			frase = (char) (frase + chiave);
		}
Poi Questo è tutto il codice dell'esercizio, programma completo:
package Es2;
import java.util.*;
public class FrequenzaCarattere {
	public static void main(String[] args) {
		
		/*Scrivere un programma che conti il numero di volte che una cifra
		 * appare in numero telefonico. il programma deve creare un array di dimensione
		 * 10 che memorizza il conto di ogni cifra da 0 a 9. leggere da tastiera un numero di
		 * telefono come stringa. esaminare ogni carattere del numero telefonico e incrementareù
		 * il conteggio relativo alla cifra nell'array. visualizzare il contenuto dell'array.
		 * */
		
	ArrayList<String> cifre = new ArrayList<String>(10);
	String telefono = null;
	int controlla = 0, chiave = 0;
	char frase = 0;
	Scanner in = new Scanner(System.in);
	
	
	do{
	System.out.println("Inserisci numero di telefono: ");
	frase = (char) in.nextInt();
	cifre.add((char)frase, telefono); //qui non mi trovo, cioè deve memorizzare solo frase e aggiungere nella lista
		
	System.out.println("Per terminare digita -1");
	controlla = in.nextInt();
	if(controlla == -1)
		break;
	
	}while(true);
	
	System.out.println("Inserisci una chiave:");
	chiave = in.nextInt();
	
	while(frase >= 0){
		
		frase++;
		frase = (char) (frase + chiave);
	}
	
	System.out.println("Il conteggio è: " +  frase);
	
	for(int i=0; i < cifre.size(); i++){
		System.out.println(cifre.get(i));
	}
	
	}
	
}
GENTILMENTE MI POTETE CORREGGERE TUTTI GLI ORRORI CHE HO FATTO, GRAZIE.