|
Us encarreguen fer un programa que, des del caixer automàtic,
donarà als clients del vostre banc la possibilitat de fer canvis
de divises.
Heu d'escriure, doncs, un programa que reculli algunes dades del vostre
client (la identificació, els tipus de moneda implicats i la quantitat
que vol canviar) i que, després de fer el càlcul, retorni
informació amb les dades de l'operació. Anem per passos.
- Obriu JCreator i creeu
el projecte (empty project) amb nom M2ex01.
En aquest projecte hi creeu una nova classe
(java file), i li poseu de nom Canvi.java.
- Aquesta classe ha de tenir:
- una sentència
d'importació com aquesta: import
java.io.*; (recordeu que l'heu de posar
immediatament abans del nom de la classe).
- un mètode main(String[]
args) que comença de la següent
manera:
public static
void main(String[] args) throws IOException {
// la
classe BufferedReader serveix per llegir del
// teclat
BufferedReader entrada=new BufferedReader(
new
InputStreamReader(System.in));
// Demanem
informació a l'usuari i la recollim a la
// variable divisain.
System.out.println("Quina moneda
desitgeu canviar? "+
"(E)uros,
(D)olars o (I)ens?");
String divisain=entrada.readLine();
// carreguem
la moneda canviada
System.out.println("Quina moneda
voleu rebre? "+
"(E)uros,
(D)olars o (I)ens?");
String divisaout=entrada.readLine();
} |
La classe BufferedReader
serveix per llegir del teclat. L'estudiareu amb més detall
en els següents mòduls. Ara no cal entendre-la: només
la usareu.
Observeu que heu creat les cadenes
divisain i divisaout.
Serviran per recollir els tipus de divisa.
- Tot seguint el mateix sistema, creeu
les següents variables: nom, cognom,
dni i quantitat.
Un cop creades, compileu el programa i executeu-lo. Ha de fer això:
- Ara heu de protegir
divisain i divisaout
per evitar entrades de dades incorrectes. Si algú demana la moneda
"T", per exemple, heu de fer que
es torni a repetir la pregunta. Embolcalleu aquestes sentències
System.out.println("Quina
moneda desitgeu canviar? "+
"(E)uros,
(D)olars o (I)ens?");
String divisain=entrada.readLine(); |
amb un bucle while que només es completi
quan la variable divisain sigui igual a "E",
"D" o "I".
Podeu declarar divisain fora del bucle i després
construir el bucle while amb els següents
operadors per a la sentència
de control del bucle: !, divisain.equals("E")
i &&.
- Feu el mateix amb divisaout.
Compileu i executeu i verifiqueu que les entrades de tipus de moneda
ja estan ben controlades.
- En el mètode main(String[]
args) creeu-hi
la variable doubleCalers,
del tipus double.
Ompliu-la de valor a partir de les dades de la variable String
quantitat. Heu après el procediment
de casting
a la pràctica 5 (Conversió entre tipus primitius).
- Ara heu de crear un nou mètode
de la classe. Aquest mètode es dirà getCanvi()
i serà el motor del canvi de divises. L'heu d'escriure immediatament
a sota del mètode main(String[] args).
Aquest en serà l'encapçalament:
public
static double getCanvi(double doubleCalers,
String divisain,
String
divisaout) {
} |
A partir de l'encapçalament, sabeu interpretar
la feina que fa?: rep una quantitat de diners (doubleCalers)
del tipus de moneda divisain i l'ha de transformar
a una quantitat de la nova moneda (divisaout).
Si des del mètode main cridéssiu
aquest mètode així:
doubleCalers
= getCanvi(10000,"I","E"); |
significaria que voleu que el mètode us calculi quants euros
són 10000 iens.
Heu de construir el cor d'aquest mètode. Podeu seguir les següents
pistes:
- Podeu utilitzar sentències de control del
tipus if (divisain.equals("D")) {
per decidir com actuar en funció del tipus de divisa.
- L'algorisme en pseudocodi pot ser: Pren el valor
de doubleCalers i converteix-lo a euros.
Després, pren aquesta quantitat i converteix-la a la moneda
de sortida. D'aquesta forma només us cal saber el canvi
del dòlar i el ien amb l'euro (0.825
el dòlar i 0.007463 el ien a dia
d'avui). Per canviar 10 dolars a euros:
10*0.825. Per canviar 10
euros a yens: 10*(1/0.007463).
- El resultat de la conversió s'ha de posar
com a valor de return del mètode.
Quan el mètode estigui llest, crideu-lo des del mètode
main. Ompliu amb ell la variable doubleCalers:
doubleCalers
= getCanvi(doubleCalers,divisain,divisaout); |
- Modifiqueu el valor de la variable
doubleCalers tot restant-li el 2% en concepte
de comissió. Reserveu el valor de la comissió en la variable
de tipus double doubleComissio.
- Afegiu aquest altre mètode
després del mètode getCanvi():
public
static String getLletra (String dni) {
String cadena="TRWAGMYFPDXBNJZSQVHLCKET";
String sdni=dni.substring(0,8);
int posicio=(Integer.parseInt(sdni))%23;
char lletra=cadena.charAt(posicio);
return sdni+lletra;
} |
que serveix per calcular la lletra del DNI. L'utilitzareu per emetre
el "tiquet" de l'operació.
- Completeu la tasca del
mètode main tot generant
el tiquet de l'operació amb un codi que ha de ser semblant
a aquest:
System.out.println("----------------------------------");
System.out.println("Resum Operació de Canvi de Divises");
System.out.println("----------------------------------");
System.out.println("Data: "+new java.util.Date());
System.out.println("----------------------------------");
System.out.println("Sr/a: "+nom+" "+cognom);
System.out.println("DNI : "+getLletra(dni));
System.out.println("----------------------------------");
System.out.println("Input: "+quantitat+" "+divisain);
System.out.println("Output: "+doubleCalers+" "+divisaout);
System.out.println("Comissió: "+doubleComissio+"
"+divisaout); |
- Compileu i executeu
al programa. Ha de reaccionar així:
|