Metodo complicado

keka
23 de Agosto del 2005
Hola !! Necesito hacer un metodo que resuelva esto:

El metodo cifrar, que asignara a cada caracter del texto aquel que resulte de sumar un valor dado a su codigo ASCII. La asignacion sera circular, por lo que si el desplazamiento es 3, el caracter 'z' debera ser sustituido por 'c'. Deberan respetarse mayusculas y minusculas, y si el texto del objeto contiene algun digito o signo de puntuacion, no sera cifrado, y se indicara un mensaje por pantalla. Solo se producira el desplazamiento (que podra ser un numero negativo) si el texto esta integramente formado por letras.
El unico atributo que tengo en la clase es una cadena de texto que llama al metodo para ser cifrada.
No se por donde empezar¿Alguien me ayuda?
Gracias

fady
23 de Agosto del 2005
no hay nada dificil guapetona :p, acabo de hacertelo y me parece que es lo que buscas, saludos

public class Cifrar {

private String texto;

public Cifrar(String t) {

this.texto = t;
}

public String cifrar() {

String res = "";

//A = 65;Z = 90;a = 97;z = 122;
for (int i=0;i<this.texto.length();i++) {

char letra = this.texto.charAt(i);
int codigoASCII = letra;

//Si pertenece a las letras en minuscula
if (codigoASCII >= 97 && codigoASCII <= 122) {

res = res+desplazar(codigoASCII);
//Si pertenece a las letras en mayuscula
} else if (codigoASCII >= 65 && codigoASCII <= 90) {

res = res+desplazar(codigoASCII);
//no pertenece a las letras
} else {

res = res+letra;
}
}
return res;
}

private char desplazar(int ascii) {

if (ascii >= 97 && ascii <= 122) {

if (ascii+3 > 122) {

ascii = ascii+3 - 122 +96;
} else {

ascii = ascii + 3;
}
} else {

if (ascii+3 > 90) {

ascii = ascii+3 - 90 +64;
} else {

ascii = ascii + 3;
}
}
return (char) ascii;
}
}

keka
23 de Agosto del 2005
MUCHAS GRACIAS