Skip to content
Snippets Groups Projects
Commit 6eb6f9e2 authored by Vesa Lappalainen's avatar Vesa Lappalainen :bicyclist:
Browse files

live19 loppu

parent 6516de4c
No related branches found
No related tags found
No related merge requests found
...@@ -7,5 +7,6 @@ ...@@ -7,5 +7,6 @@
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ohj2"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>
...@@ -12,12 +12,74 @@ package laskuri; ...@@ -12,12 +12,74 @@ package laskuri;
* *
*/ */
public class Sana { public class Sana {
private int lkm;
private String teksti;
/**
* @param s sanan sisältö
*/
public Sana(String s) {
lkm = 0;
teksti = s;
}
/**
* @return sana ja määrä merkkijonona
* <pre name="test">
* Sana sana = new Sana("kissa");
* sana.toString() === "kissa: 0";
* </pre>
*/
@Override
public String toString() {
return teksti + ": " + lkm;
}
/**
* Verrataan onko tutkittava jono
* @param s tutkittava jono
* @return true jos sama kuin s
* <pre name="test">
* Sana sana = new Sana("kissa");
* sana.oletko("kissa") === true;
* sana.oletko("kISSA") === true;
* sana.oletko("kiss") === false;
* </pre>
*/
public boolean oletko(String s) {
return teksti.equalsIgnoreCase(s);
}
/**
* Lisätään laskuria yhdellä
* <pre name="test">
* Sana sana = new Sana("kissa");
* sana.toString() === "kissa: 0";
* sana.lisaa();
* sana.toString() === "kissa: 1";
* sana.lisaa();
* sana.toString() === "kissa: 2";
* </pre>
*/
public void lisaa() {
lkm++; // lkm += 1; lkm = lkm + 1;
}
/** /**
* @param args ei käytössä * @param args ei käytössä
*/ */
public static void main(String[] args) { public static void main(String[] args) {
// TODO: lisää Sana sana = new Sana("kissa");
if ( sana.oletko("kana") ) sana.lisaa();
System.out.println(sana);
} }
} }
package laskuri; package laskuri;
import java.io.IOException;
/** /**
* Ohjelmalla lasketaan tiedostossa olevien sanojen * Ohjelmalla lasketaan tiedostossa olevien sanojen
...@@ -33,7 +34,14 @@ public class Sanalaskuri { ...@@ -33,7 +34,14 @@ public class Sanalaskuri {
* @param args ei käytössä * @param args ei käytössä
*/ */
public static void main(String[] args) { public static void main(String[] args) {
// Täydennä try {
Sanat sanat = new Sanat();
sanat.lueTiedostoJaLaske("kalevala.txt");
sanat.tulosta(System.out);
}
catch (IOException ex) {
System.err.println("Virhe: " + ex);
}
} }
} }
\ No newline at end of file
package laskuri; package laskuri;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Scanner;
/** /**
* Luokka sanojen esiintymismäärien laskemiseksi. * Luokka sanojen esiintymismäärien laskemiseksi.
* @author Vesa Lappalainen * @author Vesa Lappalainen
...@@ -7,10 +16,114 @@ package laskuri; ...@@ -7,10 +16,114 @@ package laskuri;
*/ */
public class Sanat { public class Sanat {
private Collection<Sana> alkiot = new ArrayList<Sana>();
/**
* Lisätään uusi sana rakenteeseen. Jos on jo, lisätään vanhan määrää,
* muuten luodaan uusi sana
* @param s lisättävä sana
* @example
* <pre name="test">
* #import java.io.ByteArrayOutputStream;
* #import static fi.jyu.mit.ohj2.VertaaTiedosto.*;
* ByteArrayOutputStream bs = new ByteArrayOutputStream();
* Sanat sanat = new Sanat();
* sanat.lisaa("kissa"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 1\n") === null;
* sanat.lisaa("kissa"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 2\n") === null;
* sanat.lisaa("kana"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 2\nkana: 1\n") === null;
* </pre>
*/
public void lisaa(String s) {
for (Sana sana : alkiot) {
if ( sana.oletko(s) ) {
sana.lisaa();
return;
}
}
Sana sana = new Sana(s);
sana.lisaa();
alkiot.add(sana);
}
/**
* Tulostetaan koko rakenne tietovirtaan
* @param os tietovirta johon tulostetaan
* @example
* <pre name="test">
* ByteArrayOutputStream bs = new ByteArrayOutputStream();
* Sanat sanat = new Sanat();
* sanat.tulosta(bs);
* bs.toString() === "";
* sanat.lisaa("kissa"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 1\n") === null;
* </pre>
*/
public void tulosta(OutputStream os) {
PrintStream out = new PrintStream(os);
for (Sana sana : alkiot)
out.println(sana);
}
/**
* @param rivi pilkottava jono
*/
public void kasitteleRivi(String rivi) {
/*
StringTokenizer st = new StringTokenizer(rivi,"[ ,();.:{}\"!?+\\-\\[\\]]+");
while ( st.hasMoreTokens() ) {
String s = st.nextToken();
lisaa(s);
}
*/
String[] palat = rivi.split("[ ,();.:{}\"!?+\\-\\[\\]]+");
for (String s: palat)
if ( !s.isEmpty() )
lisaa(s);
}
/**
* Luetaan tiedoston kaikki rivit ja käsitellään laskemalla kaikki sanat
* @param tiedostonNimi tiedoston nimi, jota luetaan
* @throws IOException jos tiedostoa ei voi käsitellä
* <pre name="test">
* #THROWS IOException
* #import java.io.*;
* kirjoitaTiedosto("sanatLueKoe.txt","kissa kana kissa\nkissa istuu kana");
* ByteArrayOutputStream bs = new ByteArrayOutputStream();
* Sanat sanat = new Sanat();
* sanat.lueTiedostoJaLaske("sanatLueKoe.txt"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 3\nkana: 2\nistuu: 1\n") === null;
* tuhoaTiedosto("sanatLueKoe.txt");
* </pre>
*/
public void lueTiedostoJaLaske(String tiedostonNimi) throws IOException {
try (Scanner fi = new Scanner(new FileInputStream(new File(tiedostonNimi)))) {
while ( fi.hasNext() ) {
String rivi = fi.nextLine();
kasitteleRivi(rivi);
}
}
}
/** /**
*
* @param args ei käytössä * @param args ei käytössä
*/ */
public static void main(String[] args) { public static void main(String[] args) {
// TODO: lisää Sanat sanat = new Sanat();
sanat.lisaa("kissa");
sanat.lisaa("kissa");
sanat.lisaa("koira");
sanat.tulosta(System.out);
sanat.kasitteleRivi("kissa, istuu kissa puussa");
sanat.tulosta(System.out);
} }
} }
\ No newline at end of file
package laskuri.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import laskuri.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.17 11:04:28 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class SanaTest {
// Generated by ComTest BEGIN
/** testToString31 */
@Test
public void testToString31() { // Sana: 31
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 33", "kissa: 0", sana.toString());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testOletko47 */
@Test
public void testOletko47() { // Sana: 47
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 49", true, sana.oletko("kissa"));
assertEquals("From: Sana line: 50", true, sana.oletko("kISSA"));
assertEquals("From: Sana line: 51", false, sana.oletko("kiss"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLisaa61 */
@Test
public void testLisaa61() { // Sana: 61
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 63", "kissa: 0", sana.toString());
sana.lisaa();
assertEquals("From: Sana line: 65", "kissa: 1", sana.toString());
sana.lisaa();
assertEquals("From: Sana line: 67", "kissa: 2", sana.toString());
} // Generated by ComTest END
}
\ No newline at end of file
package laskuri.test;
// Generated by ComTest BEGIN
import java.io.ByteArrayOutputStream;
import static fi.jyu.mit.ohj2.VertaaTiedosto.*;
import java.io.*;
import static org.junit.Assert.*;
import org.junit.*;
import laskuri.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.17 11:41:31 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class SanatTest {
// Generated by ComTest BEGIN
/** testLisaa26 */
@Test
public void testLisaa26() { // Sanat: 26
ByteArrayOutputStream bs = new ByteArrayOutputStream();
Sanat sanat = new Sanat();
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 32", null, vertaaString(bs,"kissa: 1\n"));
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 34", null, vertaaString(bs,"kissa: 2\n"));
sanat.lisaa("kana"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 36", null, vertaaString(bs,"kissa: 2\nkana: 1\n"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testTulosta56 */
@Test
public void testTulosta56() { // Sanat: 56
ByteArrayOutputStream bs = new ByteArrayOutputStream();
Sanat sanat = new Sanat();
sanat.tulosta(bs);
assertEquals("From: Sanat line: 60", "", bs.toString());
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 62", null, vertaaString(bs,"kissa: 1\n"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testLueTiedostoJaLaske95
* @throws IOException when error
*/
@Test
public void testLueTiedostoJaLaske95() throws IOException { // Sanat: 95
kirjoitaTiedosto("sanatLueKoe.txt","kissa kana kissa\nkissa istuu kana");
ByteArrayOutputStream bs = new ByteArrayOutputStream();
Sanat sanat = new Sanat();
sanat.lueTiedostoJaLaske("sanatLueKoe.txt"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 102", null, vertaaString(bs,"kissa: 3\nkana: 2\nistuu: 1\n"));
tuhoaTiedosto("sanatLueKoe.txt");
} // Generated by ComTest END
}
\ No newline at end of file
...@@ -35,8 +35,7 @@ public class Sanalaskuri { ...@@ -35,8 +35,7 @@ public class Sanalaskuri {
* @param args ei käytässä * @param args ei käytässä
*/ */
public static void main(String[] args) { public static void main(String[] args) {
Sanat sanat; Sanat sanat = new Sanat();
sanat = new Sanat();
try { try {
sanat.lueTiedostoJaLaske("kalevala.txt"); sanat.lueTiedostoJaLaske("kalevala.txt");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment