Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Uusi ongelma (javassa)

gem [14.09.2005 10:41:55]

#

--------------------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?

_Pete_ [14.09.2005 12:56:57]

#

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/CodeConvTOC.doc.html) eli

onkoArvoa()

eikä

onko_arvoa()

Kun nämä asiat on korjattu, voidaan palata itse ongelmaan :)

tsuriga [14.09.2005 14:36:43]

#

Niin ja kuvaava otsikko. ST.Kissa luokan nimenä näyttää lisäksi vähintään epäilyttävältä.

gem [14.09.2005 21:41:40]

#

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...

FooBat [14.09.2005 22:00:46]

#

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.

_Pete_ [15.09.2005 09:26:31]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta