Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Chyba v knihe vyukoveho kurzu Java! [vyriesene]  (Přečteno 2353 krát)

existpierre

  • Host
Chyba v knihe vyukoveho kurzu Java! [vyriesene]
« kdy: 17 Dubna 2009, 11:31:06 »
Zdravim, zacal som sa ucit Javu, no a v knihe som narazil na problem. Preberam akurat vnorene triedy.. Lenze ked zadam napriklad "trieda." ...ma sa zobrazit zoznam premennych, metod atd.. no ale tam ta vnorena trieda nie je. Vnorena trieda je private, no proste jej nadradena trieda ju akoby nevidela.. mam v tom dost nejasnosti..dokonca aj original kod z CD, aj na nom mi vypisuje chybovu hlasku..

"Cannot find symbol" je v mojom kode ..ked ukazem na Priebeh(to mam v oboch pripadoch cervenym podciarknute):

Kód: [Vybrat]
        Priebeh iterator = zasobnikJedna.Priebeh();

        while(!iterator.jePosledny()) {
            System.out.print(iterator.aktualny() + "");
            interator.Inkrementovat;
        }



Exporting non-public type through public API na CD ... toto ked ukzem mysou na kod :
Kód: [Vybrat]
  public Prubeh prubeh() {
    return new Prubeh();
  }

tu je kod:

Main.class:

Kód: [Vybrat]
package vnorenatrieda;

/**
 *
 * @author peter
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int velkost = 15;
        ZasobnikInt zasobnikJedna = new ZasobnikInt(velkost);

        for (int j=0; j<velkost; j++){
            zasobnikJedna.Vlozit(2*j);
        }
       
        Priebeh iterator = zasobnikJedna.Priebeh();

        while(!iterator.jePosledny()) {
            System.out.print(iterator.aktualny() + "");
            interator.Inkrementovat;
        }
System.out.println();

    }

}


ZasobnikInt:

Kód: [Vybrat]
package vnorenatrieda;

/**
 *
 * @author peter
 */
public class ZasobnikInt {
    private int[] zasobnik;
    private int dalsi = 0;

    public ZasobnikInt(int kapacita) {
        zasobnik = new int[kapacita];
    }

    public void Vlozit(int na) {
        if (dalsi < zasobnik.length)
            zasobnik[dalsi++] = na;
    }

    public boolean jePrazdny() {
        return (dalsi == 0);
    }

    public int Vynat() {
        if (!jePrazdny())
            return zasobnik[--dalsi];
        else
            return 0;
    }

    public int GetVelkostZasobnika() {
        return dalsi;
    }

    private class Priebeh {
       private int i = 0;

       public void Inkrementovat() {
           if (i < zasobnik.length)
               i++;
       }

       public int Aktualny() {
           return zasobnik[i];
       }

       public boolean jePosledny() {
           if (i == GetVelkostZasobnika() - 1)
               return true;
           else
               return false;
       }

       public Priebeh xPriebeh() {
           return new Priebeh();
       }
       



    }

}



Kniha je stavana pre program netbeans, v tom to aj robim
« Poslední změna: 18 Dubna 2009, 18:12:15 od eXistPierre »

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: Chyba v knihe vyukoveho kurzu Java!
« Odpověď #1 kdy: 17 Dubna 2009, 12:31:31 »
zeby chybne forum? Co tak skusit nejake forum o jave. Nejak mi nejde do hlavy co to ma s linuxom/ubuntu spolocne.
Ale k problemu:
- skuste si precitat java konvenciu pre pisanie kodu, velke pismena na nazov method sa nepouzivaju, nie ze by to bolo neprekompilovatelne, ale strasne zle sa to cita.
- co ste chcel dosiahnut touto konstrukciou?
Citace
interator.Inkrementovat;
Toto predsa java nemoze prelozit, alebo sa mylim?
- ...

Myslim, ze by ste mal zacat odznovu a najprv si osvojit zaklady javy az potom sa pustat do zlozitejsich konstrukcii typu pouzitie vnorenej triedy ...
Inak, ak tieto zdrojaky mate z knihy, radil by som knihu vymenit za inu, jednoduchsiu a pre Vas urcite lepsiu.
« Poslední změna: 17 Dubna 2009, 12:36:34 od petergula »
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

existpierre

  • Host
Re: Chyba v knihe vyukoveho kurzu Java!
« Odpověď #2 kdy: 17 Dubna 2009, 13:06:33 »
konvenciu pouzivam taku, aku mam zauzivanu z C++ a viac menej sedi aj tu.. ano ta kniha sa mi zda divna, ale uz ju mam, zaplatil som si ju tak chcem sa aspon pokusit v nej pokracovat... otazka ale nezostala zodpovedana. ... preco nefunguje vnorena trieda?

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: Chyba v knihe vyukoveho kurzu Java!
« Odpověď #3 kdy: 17 Dubna 2009, 13:16:25 »
je tazke odpovedat na Vasu otazku, zo zdrojaku nie je jasne co chcete dosiahnut. Teda aspon pre mna je to zmet kodu ktoremu nerozumie ani autor.
Tu je napriklad pouzitie inner class: http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html

A zakladny problem, preco Vam to nejde je slovicko private definujuce viditelnost triedy. Proste je odvonku neviditelna. Vo Vasej triede ju samozrejme mozete pouzivat, napr. ako v mojom prilinkovanom example:

Kód: [Vybrat]
InnerEvenIterator iterator = this.new InnerEvenIterator(); v triede DataStructure.


Celkom slusna kniha na zaciatok o Jave: http://www.linuxzone.cz/index.phtml?ids=33&idc=504
Jednoduche example na nete: http://www.exampledepot.com/

a hlavne javadoc a http://java.sun.com.

popripade Google: http://www.google.sk/search?q=java+inner+class+example&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
« Poslední změna: 17 Dubna 2009, 13:18:15 od petergula »
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

Marek_

  • Aktivní člen
  • *
  • Příspěvků: 342
Re: Chyba v knihe vyukoveho kurzu Java!
« Odpověď #4 kdy: 17 Dubna 2009, 13:21:44 »
V Javě jsou konvence důležité a krásné, jestli chceš umět Javu, musíš se naučit i její konvence!
Navíc se to blbě po tobě luští. Chybu už ti prozradili v předchozím příspěvku.
openSUSE 13.1
Opera 12 - ano, stale

existpierre

  • Host
Re: Chyba v knihe vyukoveho kurzu Java!
« Odpověď #5 kdy: 18 Dubna 2009, 18:12:01 »
Dakujem, aj mne sa to zdalo divne, ze preco to tak je, ze ta trieda nemoze vidiet,... len sa mi nezdalo to, ze preco je to tak aj v knihe, tak som si myslel ze je chyba u mna a nakoniec je to tou knihou... to ma trosku sklamalo. To z examplu na nete uz funguje dik

 

Provoz zaštiťuje spolek OpenAlt.