demo
Class Astia2

java.lang.Object
  extended by demo.Astia2

public class Astia2
extends java.lang.Object

John McLane (Bruce Willis) joutui elokuvassa Die Hard 3 ongelman eteen, jossa piti kahdella vesikanisterilla mitata jonkin muun suuruinen vesimäärä "tarkasti" ja näin estää pommin räjähtäminen. Koska aika meni varsin tiukalle, on vastaavien tilanteiden harjoittelemiseksi nyt tehty uusi menestysohjelma "Astia".
Pelillä demonstroidaan/harjoitellaan miten voidaan kahdella astialla, 5 l ja 8 l, muodostaa kaikki mahdolliset tilavuudet 1-13 l. Pelissä on kaksi varsinaista astiaa: a5 ja a8, sekä kolmas apuastia ampari. Nestettä voidaan kerrallaan kaataa yhdestä astiasta toiseen joko siten, että astian koko sisältö tyhjennetään jos se mahtuu tai astista kaadetaan sen verran että toinen astia tulee täyteen.
Tee ohjelma jota voitasiin käyttää seuraavasti:

  Käytössäsi on 8 ja 5 litran astia ja Ämpäri (100 l)

  8 litran astiassa on 0 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >ä 8[ret]
  8 litran astiassa on 8 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >8 5[ret]
  8 litran astiassa on 3 litraa
  5 litran astiassa on 5 litraa
  Mistä kaadetaan ja mihin >5 ä[ret]
  8 litran astiassa on 3 litraa
  5 litran astiassa on 0 litraa
  Mistä kaadetaan ja mihin >8 5[ret]
  8 litran astiassa on 0 litraa
  5 litran astiassa on 3 litraa
  Mistä kaadetaan ja mihin >[ret]

Version:
1.0, 09.02.2003
Author:
Vesa Lappalainen

Constructor Summary
Astia2()
           
 
Method Summary
static int etsi(Astia[] astiat, java.lang.String nimi)
          Etsii sen astian, jolla on annettu nimi.
static void main(java.lang.String[] args)
          Testataan Astia2-luokkaa
static void nimiOhje(Astia[] astiat, java.lang.String mista, java.lang.String mihin)
          Tulostaa ohjeet astioiden nimistä.
static void tulostaOhje(Astia[] astiat)
          Tulostaa tiedot asioista
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Astia2

public Astia2()
Method Detail

tulostaOhje

public static void tulostaOhje(Astia[] astiat)
Tulostaa tiedot asioista

Parameters:
astiat - taulukko josta tulostetaan
Example:
  Suuntaaja.StringOutput so = new Suuntaaja.StringOutput();
  Astia astiat[] = { new Astia("ä",100), new Astia("5",5), new Astia("8",8) };
  tulostaOhje(astiat);
  so.ero("Käytössäsi on 5.0 sekä 8.0 litran astiat ja Ämpari (100.0 l)\n") === null;
  so.palauta();
 

etsi

public static int etsi(Astia[] astiat,
                       java.lang.String nimi)
Etsii sen astian, jolla on annettu nimi.

Parameters:
astiat - taulukko astoista, joista etsitään
nimi - etsittävän astian nimi
Returns:
astian indeksi taulukossa tai -1 jos ei löydy
Example:
  Astia astiat[] = { new Astia("ä",100), new Astia("5",5), new Astia("8",8) };
  etsi(astiat,"ä") === 0;
  etsi(astiat,"Ä") === 0;
  etsi(astiat,"5") === 1;
  etsi(astiat,"8") === 2;
  etsi(astiat,"9") === -1;
 

nimiOhje

public static void nimiOhje(Astia[] astiat,
                            java.lang.String mista,
                            java.lang.String mihin)
Tulostaa ohjeet astioiden nimistä.

Parameters:
astiat - tulostettava tunnetuujen astioiden taulukko
mista - mistä yritettiin kaataa
mihin - mihin yritettiin kaataa
Example:
  Suuntaaja.StringOutput so = new Suuntaaja.StringOutput();
  Astia astiat[] = { new Astia("ä",100), new Astia("5",5), new Astia("8",8) };
  nimiOhje(astiat,"4","6");
  String tulos = "Nimeä ei tunneta: 4 tai 6\n" +
                 "Tunnetaan nimet: \n"         +
                 "ä 5 8 \n";
  so.ero(tulos) === null;             
  so.palauta();
 

main

public static void main(java.lang.String[] args)
Testataan Astia2-luokkaa

Parameters:
args - ei käytössä
Example:
 Suuntaaja.StringInput si = new Suuntaaja.StringInput();  
 Suuntaaja.StringOutput so = new Suuntaaja.StringOutput();
 
 si.input("ä 8\n8 5\n4 5\n\n");  
 main(null);
 String tulos =
   "Käytössäsi on 5.0 sekä 8.0 litran astiat ja Ämpari (100.0 l)\n"+
   "5.0 litran astiassa on 0.0 litraa nestettä\n" +
   "8.0 litran astiassa on 0.0 litraa nestettä\n" +
   "Mistä kaadetaan ja mihin >"                   + // NOPMD
   "5.0 litran astiassa on 0.0 litraa nestettä\n" +
   "8.0 litran astiassa on 8.0 litraa nestettä\n" +
   "Mistä kaadetaan ja mihin >"                   +
   "5.0 litran astiassa on 5.0 litraa nestettä\n" +
   "8.0 litran astiassa on 3.0 litraa nestettä\n" +
   "Mistä kaadetaan ja mihin >"                   +
   "Nimeä ei tunneta: 4 tai 5\n"                  +
   "Tunnetaan nimet: \n"                          + 
   "ä 5 8 \n"                                     +
   "5.0 litran astiassa on 5.0 litraa nestettä\n" +
   "8.0 litran astiassa on 3.0 litraa nestettä\n" +
   "Mistä kaadetaan ja mihin >";
 
 so.ero(tulos) === null; 
 si.palauta(); so.palauta();