/** * 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()); } } }