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