110 likes | 363 Views
L13. Sõneülesanne. Aabits(2002), vihikust 12 klass Sõned. Ü lesan ne 3 (Sõnetöötlus) A. Koostada klass, mis sisaldab järgmiste sõnetöötlusülesannete lahendamise meetodeid: … 3.2. Antud on 1) kirje : sõne, milles esineb paare kujul
E N D
L13 Sõneülesanne Aabits(2002), vihikust 12 klass Sõned
Ülesanne 3 (Sõnetöötlus) • A. Koostada klass, mis sisaldab järgmiste • sõnetöötlusülesannete lahendamise meetodeid: • … • 3.2. Antud on • 1) kirje: sõne, milles esineb paare kujul • … võtmesõna=võtmeväärtus … • 2) mingi võtmesõna. • Nii võtmesõna kui ka võtmeväärtus on sõned, • mis ei sisalda tühikut ja “=“; võtmesõna ei ole tühi. • Leida antud võtmesõnale vastav võtmeväärtus . • Kuiantud võtmesõna kirjes ei esine, siis on • tulemuseks tühiviit null. • … • B. Koostada järgmise struktuuriga testimisotstarbeline • peaklass:
class … {// Ül3 sõnetöötlusmeetodite testimine static void õpetus(){ SV.vr(“Kasutamine:”); SV.vr(“java … nr s1 [s2 …]”); SV.vr(“ kus nr on ülesande number (1, 2 …”); SV.vr(“ s1, s2, … on antu(d) sõne(d)”); }
public static void main(String[] args){ // rakendada klassi Test_1 meetodit päis() // kui käsurea argumente on vähem kui 1, siis // väljastada õpetus ja naasta (return) // muutujale nr omistada käsurealt saadud number switch(nr){ … case 2: …. // testida ülesannet 2, eelnevalt // kontrollides, kas argumente jätkub; … // kui ei jätku, siis väljastada õpetus ja naasta }//switch } }
Näide Antud on kirje eesnimi=Jaan perekonnanimi=Satikas sünniaasta=1943 Kui võtmesõnana on antud sünniaasta, siis on tulemuseks 1943 Kui võtmesõnana on antud eesnimi, siis on tulemuseks Jaan Kui võtmesõnana on antud sünnipäev, siis on tulemuseksnull
Lahendus • Kirjalik osa paberil • Ülesandele 3A vastavalt koostan klassi nimega • Sonemeetodid. • Sellesse klassi kirjutan järgmiste nimedega meetodid: • ülesandele 3.1 vastavalt meetodi nimega ….. , • ülesandele 3.2 vastavalt meetodi nimega võtmeväärtus, • … • Ülesandele 3B vastavalt koostan klassi nimega • Test_Sonemeetodidantud peaklassi näite järgi.
Klassi Sonemeetodid meetodite kirjeldused … static String võtmeväärtus(String k, String v){ // Antud: kirje sõnena k ja võtmesõna sõnena v // Tulemus: tagastatakse võtmesõnale v vastav // võtmeväärtus kirjest k; // kui k ei sisalda võtmesõna v, // siis tagastatakse tühiviit null // Eeldus: antud kirjes on paarid võtmesõna=võtmeväärtus // eraldatud üksteisest vähemalt ühe tühikuga; // tühikut ei esine paaris võtmesõna=võtmeväärtus; // kirje alguses ega lõpus ei pruugi tühikuid olla; // võtmesõna esineb kirjes ülimalt üks kord } … …
Klassi Sonemeetodid salvestan faili nimega Sonemeetodid.java Klassi Test_Sonemeetodid salvestan faili nimega Test_Sonemeetodid.java II. Arvutil
class Test_Sonemeetodid {// Ül3 sõnetöötlusmeetodite testimine static void õpetus(){ SV.vr("Kasutamine:"); SV.vr("java … nr s1 [s2 …]"); SV.vr(" kus nr on ülesande number (1, 2 …"); SV.vr(" s1, s2, … on antu(d) sõne(d)"); } public static void main(String[] args){ Test_1.päis(); if(args.length < 1){õpetus(); return;} int nr = Integer.parseInt(args[0]); switch(nr){ … case 2: if(args.length != 3){ SV.vr ("Ülesande 2 korral peab andma 3 argumenti: \n 2 kirje võti "); õpetus(); return; }
String v = args[2]; String vv = Sonemeetodid.võtmeväärtus(args[1], v); if(vv != null) SV.vr("Võtme " + v + "väärtus on " + vv + "."); else SV.vr("Võtit" + v + "ei ole."); break; … default: SV.vr(nr + ": ülesande number vale!"); õpetus(); }//switch } }
class Sonemeetodid{ . . . static String võtmeväärtus(String k, String v){ // Täiendav eeldus: // võtmesõna ei esine ühegi teise võtmesõna lõpus int i = k.indexOf(v + "="); if(i == -1) return null; // võtmesõna v ei esine String s = k.substring(i); // s algab võtmesõnaga v int j = s.indexOf(" "); if(j == -1) j = s.length(); // kui väärtus on päris lõpus return s.substring(v.length()+1, j); } . . . }