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

live19

parent c79253b3
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ohj2"/>
<classpathentry kind="output" path="bin"/>
</classpath>
kissa istuu puussa
kissa naukuu
kissa naukuu
\ No newline at end of file
package laskuri;
/**
* Luokka, joka laskee yhden sanan esiintymiskertoja
* @author Vesa Lappalainen
* @version 1.0, 11.03.2003
*
* <pre>
* kissa
* 1
* </pre>
*
*/
public class Sana {
private int lkm;
private final String teksti;
/**
* alustaa sanan
* @param s mitä sanaa laskee
*/
public Sana(String s) {
this.lkm = 0;
this.teksti = s;
}
/**
* 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 this.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++;
}
/**
* @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;
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
Sana sana = new Sana("kissa");
if ( sana.oletko("kana") ) sana.lisaa();
System.out.println(sana.toString());
}
}
\ No newline at end of file
package laskuri;
import java.io.IOException;
/**
* Ohjelmalla lasketaan tiedostossa olevien sanojen
* esiintymismääriä.
*<pre>
* Tarvitaan luokat:
* Sana
* - lisää laskuria
* - tunnista sana
*
* Sanat
* - lue tiedosto
* - etsi sana
* - pätki rivi
*
* Algoritmi:
* 1) Lue tiedostosta rivi.
* 2) Pätki rivi sanoiksi
* 3) Lisää kunkin sanan esiintymismäärää yhdellä
* - jos sanaa ei vielä ole ennestään, lisää sana
* 4) jatka 1) kunnes koko tiedosto käsitelty
*
*</pre>
* @author Vesa Lappalainen
* @version 1.0, 21.02.2003
*/
public class Sanalaskuri {
/**
* Lasketaan tiedostossa olevat sanat
* @param args ei käytössä
*/
public static void main(String[] args) {
Sanat sanat;
sanat = new Sanat();
try {
sanat.lueTiedostoJaLaske("sanat.txt");
sanat.tulosta(System.out);
} catch (IOException e) {
System.err.println("Ei aukea sanat.txt");
}
}
}
\ No newline at end of file
package laskuri;
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;
import java.io.File;
/**
* Luokka sanojen esiintymismäärien laskemiseksi.
* @author Vesa Lappalainen
* @version 1.0, 21.02.2003
*/
public class Sanat {
private Collection<Sana> alkiot = new ArrayList<Sana>();
/**
* alustetaan sanat
*/
public Sanat() {
// koska alustettu jo esitetlyn yhteydessä
}
/**
* 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);
}
/**
* Pilkotaan rivi sanoiksi ja lisätään ne kaikki rakenteeseen
* @param rivi käsiteltävä rivi
* @example
* <pre name="test">
* ByteArrayOutputStream bs = new ByteArrayOutputStream();
* Sanat sanat = new Sanat();
* sanat.kasitteleRivi("kissa kana kissa"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 2\nkana: 1\n") === null;
* sanat.kasitteleRivi("kissa istuu kana"); sanat.tulosta(bs);
* vertaaString(bs,"kissa: 3\nkana: 2\nistuu: 1\n") === null;
* </pre>
*/
public void kasitteleRivi(String rivi) {
/*
String s;
StringTokenizer st = new StringTokenizer(rivi,"[ ,();.:{}\"!?+\\-\\[\\]]+");
while ( st.hasMoreTokens() ) {
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>
*/
/**
* 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ä
*/
public static void main(String[] args) {
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 2024.03.11 11:36:59 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class SanaTest {
// Generated by ComTest BEGIN
/** testOletko34 */
@Test
public void testOletko34() { // Sana: 34
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 36", true, sana.oletko("kissa"));
assertEquals("From: Sana line: 37", true, sana.oletko("kISSA"));
assertEquals("From: Sana line: 38", false, sana.oletko("kiss"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testLisaa48 */
@Test
public void testLisaa48() { // Sana: 48
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 50", "kissa: 0", sana.toString());
sana.lisaa();
assertEquals("From: Sana line: 52", "kissa: 1", sana.toString());
sana.lisaa();
assertEquals("From: Sana line: 54", "kissa: 2", sana.toString());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString64 */
@Test
public void testToString64() { // Sana: 64
Sana sana = new Sana("kissa");
assertEquals("From: Sana line: 66", "kissa: 0", 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 static org.junit.Assert.*;
import org.junit.*;
import laskuri.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2024.03.11 11:37:08 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class SanatTest {
// Generated by ComTest BEGIN
/** testLisaa30 */
@Test
public void testLisaa30() { // Sanat: 30
ByteArrayOutputStream bs = new ByteArrayOutputStream();
Sanat sanat = new Sanat();
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 36", null, vertaaString(bs,"kissa: 1\n"));
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 38", null, vertaaString(bs,"kissa: 2\n"));
sanat.lisaa("kana"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 40", null, vertaaString(bs,"kissa: 2\nkana: 1\n"));
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testTulosta52 */
@Test
public void testTulosta52() { // Sanat: 52
ByteArrayOutputStream bs = new ByteArrayOutputStream();
Sanat sanat = new Sanat();
sanat.tulosta(bs);
assertEquals("From: Sanat line: 56", "", bs.toString());
sanat.lisaa("kissa"); sanat.tulosta(bs);
assertEquals("From: Sanat line: 58", null, vertaaString(bs,"kissa: 1\n"));
} // Generated by ComTest END
}
\ No newline at end of file
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