⌛⌛ Valuuttakurssit

Aseta vastauksesi tiedostoon Currencies.java.

Toteuta yksinkertainen valuuttamuunnin, joka hyväksyy standardisyötteestä System.in seuraavanlaisia komentoja:

  • rate AAA x

    • Kirjaa muistiin tiedon, että 1 euro on x valuutan AAA rahayksikköä.

    • Valuutta ilmaistaan kolmen merkin pituisella lyhenteellä.

    • Esim. komento “rate USD 1.087” asettaisi tiedon, että 1 euro on 1.087 USA:n dollaria.

    • Jos kyseiselle valuutalle on olemassa jo aiempi kurssitieto, korvaa uusi kurssitieto aiemman tiedon.

    • Tulostaa ruudulle muotoa “Stored the rate 1 EUR = x AAA” olevan ilmoituksen.

  • convert x AAA

    • Tulostaa ruudulle muodossa “x AAA = y EUR” tiedon, kuinka montaa euroa x valuutan AAA rahayksikköä vastaa.

    • Esim. komento “convert 4.99 USD” voisi tulostaa rivin “4.990 USD = 4.591 EUR”.

    • Jos annetulle valuutalle ei ole määritetty kurssia, tulostetaan muotoa “No rate for AAA has been stored!” oleva viesti.

  • rates

    • Tulostaa ruudulle kaikki ohjelmaan toistaiseksi kirjatut valuuttakurssit valuuttojen lyhenteiden mukaisessa aakkosjärjestyksessä.

      • Aluksi tulostetaan otsikko “Stored euro rates:”.

      • Otsikon jälkeen tulostetaan kukin kurssitieto omalle rivilleen muodossa “`` AAA x``”, missä AAA on valuutan lyhenne ja x ilmaisee valuuttakurssin arvon

        • Huomaa, että kunkin kurssitietorivin alussa on 2 välilyöntiä.

  • quit

    • Lopettaa ohjelman toiminnan.

      • Tulostaa lopetusta ennen ilmoituksen “Quit-command received, exiting...”.

Huomioi lisäksi seuraavat säännöt:

  • Lukujen tulostuksessa käytetään 3 desimaalin tarkkuutta. Eli print-funktion sijaan kannattanee käytää format-funktiota.

  • Ennen seuraavan komennon lukemista ruudulle tulostetaan viesti “``Enter command: ``” ilman rivinvaihtoa.

  • Käyttäjän antama komento tulostetaan välittömästi sellaisenaan ruudulle.

  • Ellei käyttäjän antama komento täsmää minkään tehtävänannossa mainitun komennon kanssa, tai komennolla oli laittomia parametreja, tulosta virhetulostevirtaan System.err viesti “Unknown or illegal command!”.

  • Tallenna ja käsittele kurssitietoja double-tyyppisinä arvoina.

Alla kuvattu esimerkkitesti selventää ohjelman käyttäytymistä.

Esimerkkitesti

Alla on kuvattu ensimmäisen testin odotettu tulos. Huomaa, että tässä näkyvät käyttäjän syötteet ovat itse asiassa ohjelman erikseen tulostamia (tehtävänannossa pyydettiin välittömästi tulostamaan käyttäjän antamat syötteet).

Enter command: rate usd 1.0873524599
Stored the rate 1 EUR = 1.087 USD
Enter command: rate GBP 0.7160936876
Stored the rate 1 EUR = 0.716 GBP
Enter command: rate INR 69.3502525376
Stored the rate 1 EUR = 69.350 INR
Enter command: convert 125 AUD
No rate for AUD has been stored!
Enter command: rate aud 1.3895878081
Stored the rate 1 EUR = 1.390 AUD
Enter command: convert 125 AUD
125.000 AUD = 89.955 EUR
Enter command: rate CAD 1.3243409285
Stored the rate 1 EUR = 1.324 CAD
Enter command: rate SGD 1.4485057059
Stored the rate 1 EUR = 1.449 SGD
Enter command: rate CHF 1.0371983277
Stored the rate 1 EUR = 1.037 CHF
Enter command: rates
Stored euro rates:
  AUD 1.390
  CAD 1.324
  CHF 1.037
  GBP 0.716
  INR 69.350
  SGD 1.449
  USD 1.087
Enter command: convert 149.99 GBP
149.990 GBP = 209.456 EUR
Enter command: quit
Quit-command received, exiting...

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.