Programa para codificar en Java

import java.util.Scanner;

public class Criptografia {

public static void main(String[] args) {
char[] codigo = {'B','O','A','D','U','L','E','I','P'};
// String alfabeto = "BOADULEIP...";
// String alfabetoCodificado = "123456789...";
System.out.println("1-Codificar\n2-Descodificar\n3-Desplazamiento\n4-Salir\nOpcion:");
Scanner lee = new Scanner(System.in);
int opcion = lee.nextInt();
while(opcion>0&&opcion<4){
if(opcion==1){

// String mensaje = "BOBADA";
// for(int i=0; i < alfabeto.length();i++){
// mensaje = mensaje.replace(alfabeto.charAt(i), alfabetoCodificado.charAt(i));
// }

System.out.println("Palabra a codificar:");
lee.nextLine();
String palabra= lee.nextLine();

palabra = palabra.toUpperCase();
char[] solucion = new char[palabra.length()];
for (int i = 0; i < palabra.length(); i++) {
char aux = palabra.charAt(i);
boolean cambia = false;
for (int j = 0; j < codigo.length; j++) {
if(aux==codigo[j]){
String cod = String.valueOf(j+1);
solucion[i]=cod.charAt(0);
cambia=true;
}
}
if(!cambia){
solucion[i]=aux;
}
}
System.out.print("Palabra a codificar: "+palabra+"\nPalabra codificada: ");
for (int i = 0; i < solucion.length; i++) {
System.out.print(solucion[i]);
}
System.out.println();
}
if(opcion==2){
System.out.println("Palabra a descodificar:");
lee.nextLine();
String palabra= lee.nextLine();
palabra = palabra.toUpperCase();
char[] solucion = new char[palabra.length()];
for (int i = 0; i < palabra.length(); i++) {
String aux = palabra.substring(i,i+1);
boolean cambiar = false;
for (int j = 0; j < codigo.length; j++) {
String auxi = (j+1)+"";
if(aux.equals(auxi)){
solucion[i]=codigo[j];
cambiar=true;
}

}
if(!cambiar){
solucion[i]=aux.charAt(0);
}
}
System.out.print("Palabra codificada: "+palabra+"\nPalabra descodificada: ");
for (int i = 0; i < solucion.length; i++) {
System.out.print(solucion[i]);
}
System.out.println();


}
if(opcion==3){
System.out.println("Desplazamiento:");
int despl = lee.nextInt();
lee.nextLine();
System.out.println("Palabra a codificar:");
String palabra= lee.nextLine();
palabra = palabra.toUpperCase();
char[] solucion = new char[palabra.length()];
for (int i = 0; i < palabra.length(); i++) {
char aux = palabra.charAt(i);
boolean cambia = false;
for (int j = 0; j < codigo.length; j++) {
if(aux==codigo[j]){
String cod = String.valueOf(j+1+despl);
solucion[i]=cod.charAt(0);
cambia=true;
}
}
if(!cambia){
solucion[i]=aux;
}
}
System.out.print("Palabra a codificar: "+palabra+"\nPalabra codificada: ");
for (int i = 0; i < solucion.length; i++) {
System.out.print(solucion[i]);
}
System.out.println();



}

System.out.println("\n1-Codificar\n2-Descodificar\n3-Desplazamiento\n4-Salir\nOpcion:");
opcion=lee.nextInt();
}
lee.close();
}

}