--------------------Configuration: j2sdk1.4.0_02 <Default>-------------------- G:\Olio-ohjelmointi\OO\ST\Paaohjelma.java:132: cannot resolve symbol symbol : method onko_arvoa (int) location: class ST.Kissa loytyi = omatKisut.onko_arvoa( arvo ); ^ G:\Olio-ohjelmointi\OO\ST\Paaohjelma.java:138: cannot resolve symbol symbol : method tulosta_lista () location: class ST.Kissa omatKisut.tulosta_lista(); // tulostetaan lista ^ 2 errors Process completed.
Virheilomitus näyttää tuolta. Eli Lista-luokassa on määritelty molemmat, mutta ne ei jostain syystä kelpaa pääohjelmalle Alla)
loytyi = omatKisut.onko_arvoa( arvo ); if (loytyi) System.out.println("Kissa löytyi!"); else System.out.println("Kissaa ei ole olemassa!"); omatKisut.tulosta_lista(); // tulostetaan lista
Ja Listaluokassa jossa on metodi "onko_arvoa" seka "tulosta_lista"
public boolean onko_arvoa (int etsittava) { public void tulosta_lista() throws IOException {
Miksi pääohjelma ei hyväksy noita Lista-luokan metodeja, kun se kuitenkin hyväksyy muut Listasta?
Voisit aluksi käyttää oikein code tageja ja toisekseen muotoilla koodisi niin, että sitä jaksaa/pystyy tulkitsemaan eli sisennykset kuntoon. Tämä käy kätevästi käyttämällä hyvää editoria(tm) tai sitten hyvää IDE:ä (tm). Kolmanneksi voisit nimetä metodisi Java Style Guiden mukaisesti (http://java.sun.com/docs/codeconv/html/
onkoArvoa()
eikä
onko_arvoa()
Kun nämä asiat on korjattu, voidaan palata itse ongelmaan :)
Niin ja kuvaava otsikko. ST.Kissa luokan nimenä näyttää lisäksi vähintään epäilyttävältä.
tsuriga kirjoitti:
Niin ja kuvaava otsikko. ST.Kissa luokan nimenä näyttää lisäksi vähintään epäilyttävältä.
Anteeksi epämääräisyys. Tuo ST luokan nimen eteen tuli packagesta, kun copy-pastella laitoin virheilmoituksen.
Luonnollisestikin koodi on sisennettyä ja käytössä on editori (joskaan ei niin hyvä). Esimerkissä oli lähinnä metodien nimiä, itse metodit olivat sen verran pitkiä etten niitä laittanut kokonaisuudessaan.
Ja kiitos huomautuksesta, alaviivat metodeista on nyt poistettu :)
Ongelmakin on ratkennut, sen sijaan uusia on ilmestynyt roppakaupalla. Jos on hyviä vinkkejä kuinka lajittelualgoritmeja (esim. pikalajittelu, lisäyslajittelu) käytetään linkitetyn listan järjestämiseen, ilolla otan vastaan. Esimerkit kun ovat vain taulukoille...
gem kirjoitti:
Ongelmakin on ratkennut, sen sijaan uusia on ilmestynyt roppakaupalla. Jos on hyviä vinkkejä kuinka lajittelualgoritmeja (esim. pikalajittelu, lisäyslajittelu) käytetään linkitetyn listan järjestämiseen, ilolla otan vastaan. Esimerkit kun ovat vain taulukoille...
Olettaen, että käytät fiksuna java-ohjelmoija jotain List-interfacen perivää luokkaa kuten java.util.Vector tai java.util.ArrayList, onnistuu järjestäminen yhtä helposti kuin taulukoille.
java.util.Collections.sort(myList);
Yleisesti listojen järjestäminen ei ole kovin tehokasta verrattuna taulukoiden järjestämiseen ja monet hyvin taulukoilla toimivat algoritmit ovat (kuten quicksort) ovat verrattaen huonoja listojen järjestämiseen. Mergesort toimii jotenkin, mutta jos meinaa pitää järjestettyä listaa, kannattaa järjestys säilyttää heti lisäyksessä lisäämällä listan alkiot aina oikeaan paikkaa.
gem kirjoitti:
tsuriga kirjoitti:
Niin ja kuvaava otsikko. ST.Kissa luokan nimenä näyttää lisäksi vähintään epäilyttävältä.
Anteeksi epämääräisyys. Tuo ST luokan nimen eteen tuli packagesta, kun copy-pastella laitoin virheilmoituksen.
Luonnollisestikin koodi on sisennettyä ja käytössä on editori (joskaan ei niin hyvä). Esimerkissä oli lähinnä metodien nimiä, itse metodit olivat sen verran pitkiä etten niitä laittanut kokonaisuudessaan.
Ja kiitos huomautuksesta, alaviivat metodeista on nyt poistettu :)Ongelmakin on ratkennut, sen sijaan uusia on ilmestynyt roppakaupalla. Jos on hyviä vinkkejä kuinka lajittelualgoritmeja (esim. pikalajittelu, lisäyslajittelu) käytetään linkitetyn listan järjestämiseen, ilolla otan vastaan. Esimerkit kun ovat vain taulukoille...
Testausta:
/** * Gets next object from this queue. If there is no objects in the queue when calling this * method the thread calling this will block until new object is available * * @return the next object from the queue */ public synchronized Object get() { Object o = null; while (_available == false) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } o = _queue.remove(0); _available = _queue.size() > 0; _counter++; return o; }
Kaitpa noi sisennykset säilyy oikein?
Niinhän ne teki... Eli ens kerralla laittele koodejas tuohon tyyliin :)
Linkitetty lista sortataan näin:
LinkedList ll = new LinkedList(); Collections.sort(ll);
Jos listassa on erikoisia olioita, pitää itse toteuttaa niissä Comparable rajapinta sillä tapaa, että oliot sorttautuvat haluttuun järjestykseen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.