Xifra del Cèsar
-9
Classe que donada una frase té com a sortida la mateixa frase però havent-li aplicat la xifra del cèsar (per defecte amb valor 3).
/**
* Classe que té com a paràmetre d'entrada una frase i com a sortida la mateixa
* frase havent-li aplicat la xifra del César. El programa és funcional tenint
* en compte que es pren com a alfabet allò que està definit com a lletra a la
* taula ASCII (del 65 al 90 lletres majúscules i del 97 al 122 lletres minúscules).
* El programa no té en compte lletres especials com la ce trencada (ç) o la eñe (ñ).
*/
package blog.crypto;
public class Cesar {
private static final int CESAR = 3;
private void execute( String s ) throws Exception {
String st = "";
for ( int i = 0 ; i < s.length() ; i++ ) {
char c = s.charAt(i);
if ( !isLletra( c ) ) {
st += ""+c;
continue;
}
int aux = (int)c;
if ( isMajuscula(c) ) {
aux -= 65;
aux = (aux+CESAR) % 26;
aux += 65;
}
else {
aux -= 65;
aux = (aux+CESAR) % 26;
aux += 65;
}
c = (char)aux;
st += ""+c;
}
System.out.println(st);
}
/**
* Comprova si un caràcter és una lletra
* @param c
* @return boolean
*/
private boolean isLletra( char c ) {
return (c >= 65 && c <=90) || (c >= 97 && c <= 122);
}
/**
* Comprova si una lletra és majúscula
* @param c
* @return boolean
*/
private boolean isMajuscula( char c ) {
return (c >= 65 && c <=90);
}
public static void main(String[] args) {
Cesar c = new Cesar();
try {
if ( args.length != 1 ) {
System.out.println("Ús: java blog.crypto.Cesar \"frase\"");
System.exit(0);
}
c.execute( args[0] );
}
catch ( Exception ex ) {
System.out.println("ERROR:: " + ex.toString());
}
}
}
Comments
Fri. Oct. 13th, 2006 7:34 AM
bertheymans
bertheymans





