Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Davs
    tag

    Tényleg, csak az avatar-t néztem.

    A futtató környezetet megadtam, és a egy könyvhöz adott cd-vel kiakartam próbálni ezt a hibát írja ki:"Error: Could not find or load main class Saluton"

    Szerintem CLASSPATH hiba..Letre kell hozni windowson egy CLASSPATH nevu enviromental variablet, aminek az erteke "." (" nelkul). Sajatgepen jobbklikk -> Properties -> Advanced system settings es a felugro ablak aljan ott a gomb

  • Davs
    tag

    Hali!
    Singleton osztalyokkal es GC-vel kapcsolatban lenne egy kerdesem..Ha van egy osztalyom, pl
    public MyClass {
    private static MyClass myClassInstance = null ;
    private MyClass() {}

    public static MyClass getInstance() {
    if(myClassInstance == null) { myClassInstance = new MyClass(); }
    return myClassInstance ;
    }
    }

    Naugye most az osztalynak van referenciaja sajat magara. GC amennyire en tudom addig nem torol egy objektumot, amig van ra valahol strong reference. Mi a helyzet ebben az esetben? Mikor fogja a GC torolni az osztaly? Van kulonbseg az kozott, hogy egy osztalynak van referenciaja magara es akozott, hogy mas osztalynak van referenciaja az adott osztalynak?

  • Davs
    tag

    Ha egy osztályt készítünk, akkor abban miért szokás felülírni az örökölt toString() metódust? Nézegettem forráskódokat a neten, és elég sok helyen vettem ezt észre.

    class MyClass {
    public MyClass {} // constructor

    public String toString() {
    return "Hello en vagyok az, MyClass" ;
    }

    public static void main(..) {
    System.out.println(new MyClass()) ; //Hello, en vagyok az, MyClass
    }

    }

    Magyarul "ki tudod iratni az objektumot" .

  • Davs
    tag

    Még csak nemrég kezdtem el tanulgatni a Java nyelvet, de a tankönyv, amit olvasok már többször említette az "interfész" szót, és ezt is: "az osztály által implementált interfészek".
    Később persze ezt is tárgyalja majd a könyv, de már nagyon kíváncsi vagyok rá, beleolvasni meg inkább nem akarok előre.
    Csak egy rövid összefoglalóként mégis, mik ezek az interfészek, mire jók, és mit jelent az hogy egy osztály implementál egy interfészt?

    Egy intefesz csak definialja a metodusok neveit. Ha az osztalyod implementalja az interfesz, akkor az osztalynak definialnia kell MINDEN metodust, ami az interfeszben volt. Ahogy az elottel szolo peldajaban is latod, a MyService interfeszben csak a metodusok neve van definialva. A MyServiceImpl osztaly implementalja a MyService interfeszt, ezert implementalnia kell a get/setSomething metodusokat.

    Ez ez egesz iterfeszes dolog pl arra jo, hogy ellenorizni tudod, hogy egy osztaly implementalja-e az adott interfeszt, es ha igen, akkor biztosan tudod, hogy az osztaly tartalmazza az interfeszben definialt metodusokat stb.

  • Davs
    tag

    Sziasztok!

    Olvasom a hátékony java könyvet, nem rossz könyv, de néha hatalmas ugrásnak érzem.
    Lenne kérdésem, most van egy kompozicíó vs osztály öröklés téma.

    Ezt nem teljesen értem:
    "Az öröklés csak akor játszik igazián szerepet, amikor az alosztály tényleg valódi altípusa a szuperosztálynak. Más szavakkal egy B osztály csak akkor bővíthet egy A osztályt, ha a két osztály között megvan a megfelelőségi kapcsolat. Mielőtt B-vel bővítenénk A-t, tegyük fel a kérdést: Minden B megfelel A-nak? Nemleges válasz esetén a B esetleg tartalmazzon egy A privát példányt és az API legyen kisebb és egyszerűbb."
    Mi a valódi altípus, és megfelelőségi kapcsolat? Nekem ezek a fogalmak nem igazán derültek ki.

    Meg a könyv azt írta, hogy a Kompozíció végül is a Decorator tervezési minta... Azzal megtudnám tanulni ezt a kompozíciót? :).
    Ez sem rossz amit ír a könyv ír, de nekem akkor sem tiszta a példa alapján belekavarodok...

    És amúgy is érdemes használni a Kompozíciót?

    class A {}
    class B extends A {} -> ez oroklodes
    class C {
    public A AObject = new A() ; -> ez kompozicio
    }

    B objektum eseten minden public es protected dolgot (metodust es valtozot) oroklunk az A-bol. B-ben tudunk hozzatenni az A-bol orokolt dolgokhoz, de altalanosan elmondhato, hogy ami A-ban van (es public) az a B-ben is ott van, ezert lenyegeben mondhatni, hogy a "B" class "A" tipusu is. Mivel a B az A-tol orokol, az alabbi kodreszlet valid:
    A Avaltozo = new B() ;

    Kompozicio eseten nem csinalhatsz ilyent: A Avaltozo = new C() ; -> mivel a C nem orokol az A-tol, egyszeruen a C csak tartalmaz egy A-t.
    Oroklodes = "olyan, mint" -> B orokol A-tol -> B olyan, mint az A ( B az A altipusa)
    Kompozicio = "van neki" -> C-ben van "A-kompozicio" -> C-nek van A-ja

    Nemtudom, mennyire vilagos ebbol, szerintem rossz tanar lennek, de ha mar ennyit utottem a gombokat, azert elkuldom, hatha van benne valami ertheto is :D (+ remelem nem tevedtem nagyot sehol se)

  • Davs
    tag

    Hi!
    Elkezdtem olvasgatni a concurrency temarol es lenne egy kerdesem. Sokszor van emlite a szovegben a single processor - multiple processor dolog. Egy ketmagos proci most akkor melyik csoportba tartozik? A ket mag tekintheto ket kulonallo processzornak?

  • Davs
    tag

    Hali!

    Az lenne a kérdésem, hogy milyen könyvet/online anyagot használsz a tudásod elmélyítéséhez?

    Többieknek:
    Kellene egy kis segítség definiáció értelemzésében.
    Mit jelentnek a következő kifejezések, nekem nem tiszta :(

    "változtatható objektum", "végleges objektum", "végleges mező", én igazából itt a final kulcsszóra gondoltam, de nem vagyok benne biztos.

    a final valtozo erteket nem lehet valtoztatni (objektum eseteben csak a referencia fix)
    final metodust nem lehet felulirni (override) orokolt objektumban
    final osztalybol pedig nem lehet orokolni..
    kb ennyi

  • Davs
    tag

    Tényleg, itt mi a hiba? a static kulcsszó hiánya?
    Most nincs semmilyen java előttem, és így fejben keresek megoldást.

    hunfatal: úgy tűnik, hogy a java 1.5-től elérhetőek az annotációk. (Az override az pedig annotáció...)
    Java annotation - wikipedia

    Nincs hiba, a ForNameCreator class felulirta a types() fuggvenyt, ahogy kell. Az zavart ossze engem, hogy rogton a class elejen volt egy szinten types nevu valtozo (ArrayList) es azt hittem, hogy valahogy az irja felul a fuggvenyt.

  • Davs
    tag

    Nekem nagyon gyanús, hogy nem teljes a példa.
    Vagy simán hibás.

    PetCreator:

    //: typeinfo/pets/PetCreator.java
    // Creates random sequences of Pets.
    package typeinfo.pets;
    406
    Thinking in Java
    Bruce Eckel
     
    import java.util.*;

    public abstract class PetCreator {
    private Random rand = new Random(47);
    // The List of the different types of Pet to create:
    public abstract List<Class<? extends Pet>> types();
    public Pet randomPet() { // Create one random Pet
    int n = rand.nextInt(types().size());
    try {
    return types().get(n).newInstance();
    } catch(InstantiationException e) {
    throw new RuntimeException(e);
    } catch(IllegalAccessException e) {
    throw new RuntimeException(e);
    }
    }
    public Pet[] createArray(int size) {
    Pet[] result = new Pet[size];
    for(int i = 0; i < size; i++)
    result[i] = randomPet();
    return result;
    }
    public ArrayList<Pet> arrayList(int size) {
    ArrayList<Pet> result = new ArrayList<Pet>();
    Collections.addAll(result, createArray(size));
    return result;
    }
    } ///:~

    ForNameCreator:

    //: typeinfo/pets/ForNameCreator.java
    package typeinfo.pets;
    import java.util.*;

    public class ForNameCreator extends PetCreator {
    private static List<Class<? extends Pet>> types =
    new ArrayList<Class<? extends Pet>>();
    // Types that you want to be randomly created:
    private static String[] typeNames = {
    "typeinfo.pets.Mutt",
    "typeinfo.pets.Pug",
    "typeinfo.pets.EgyptianMau",
    "typeinfo.pets.Manx",
    "typeinfo.pets.Cymric",
    Type Information
    407 
     
    "typeinfo.pets.Rat",
    "typeinfo.pets.Mouse",
    "typeinfo.pets.Hamster"
    };
    @SuppressWarnings("unchecked")
    private static void loader() {
    try {
    for(String name : typeNames)
    types.add(
    (Class<? extends Pet>)Class.forName(name));
    } catch(ClassNotFoundException e) {
    throw new RuntimeException(e);
    }
    }
    static { loader(); }
    public List<Class<? extends Pet>> types() {return types;}
    } ///:~

  • Davs
    tag

    Hali!
    A kovetkezo dologra szeretnek rakerdezni:

    PetCreator:

    public abstract class PetCreator {
    public abstract List<Class<? extends Pet>> types();
    }

    ForNameCreator:

    public class ForNameCreator extends PetCreator {
    private static List<Class<? extends Pet>> types =
    new ArrayList<Class<? extends Pet>>();
    }

    A PetCreatorban a types() egy abstract metodus, nem? Akkor hogy lehet, hogy a ForNameCreator-ban mint sima field szerepel?

  • Davs
    tag

    Köszi a választ mindkettőtöknek. Akkor azt hiszem utána kellene ennek olvasnom. Esetleg egy link valakitől, hogy konkrétan mi ez?

    Java concurrency . Az elso link jonak tunik, az a hivatalos dokumentacio (ha jo angolul)

    Amugy minden GUI-nal ugy van, hogy azon a szalon, ahol a JFrameket stb- t csinalod nem szabad komolyabb, sokaig tarto dolgokat csinalni, mert az igy leblokkolja a GUI-t (ami igy nem tudja ellenorizni, hogy tortent-e uj Event -billentyulenyomas, egerklikk, progressbar changge- stb.

  • Davs
    tag

    Szeretnék írni egy fájlmásolást progress barral, viszont nem jön össze. Mikor meghívom a lent látható fileMasolas metódust szépen megjelenik a JGrame, viszont a belseje "átlátszó" és csak azután jelenik meg, hogy végzett az utána következő fájl másolással. Valakinek ötlet, hogy mi nem jó?

    private void fileMasolas() {

    JFrame frame = new JFrame("Mentés másolása folyamatban");

    pb = new JProgressBar(0, 100);
    pb.setValue(0);
    pb.setStringPainted(true);

    JPanel panel = new JPanel();
    panel.add(pb);

    panel.setBorder(BorderFactory.createEmptyBorder(40, 75, 40, 75));
    frame.setContentPane(panel);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    File filein = new File("D:/adat.db");
    File fileout = new File("D:/adat_new.db");

    FileInputStream fin = null;
    FileOutputStream fout = null;
    long length = filein.length();
    long counter = 0;
    int r = 0;
    byte[] b = new byte[1024];
    try {
    fin = new FileInputStream(filein);
    fout = new FileOutputStream(fileout);
    while ((r = fin.read(b)) != -1) {
    counter += r;
    int bar = (int) (100.0 * counter / length);
    pb.setValue(bar);
    fout.write(b, 0, r);
    }
    } catch (Exception e) {
    System.out.println("Hiba");
    }
    }

    Ohm az ilyent szerintem kulon Threadben kellene csinalni. Itt nem arrol van szo, hogy a masolas blokkolja a GUI threadet es azert nem frissiti magat a masolas alatt?

  • Davs
    tag

    Hali!

    Köszönöm a válaszokat! Athlon64+, Davs :) :R

    Most jövők elméleti / gyakorlati kérdésekkel, majd. Leporoltam a Java könyveket, és erősen Java hivő lettem ;]

    A beágyazott osztályok, még odébb vannak, de ha ott tartuk, feltétlenül szólok!
    Classloader-t nem ismerem, feliírtam magamnak, az általában melyik nagyobb témakörrel együtt szerepel? Beágyazott osztályoknál? Nekem még ez új volt. :) Mindenképp utánaolvasok majd :)

    Ezt jó volt megjegyezni, hogy a static osztály, csak belső lehet.

    Akkor viszont, jöjjön a kérdés:
    "Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból."
    1.
    - Miért fér hozzá a tartalmozó osztály? Hiszen ha a belső osztály privát, akkor elméletben nem férek hozzá. De mégis hozzáfér az őt tartalmazó osztály? Miért?
    Például van az A osztáy privát, a B osztály public, akkor az A hozzáfér a B osztály tagfüggvényeihez/adattagjaihoz, de a B nem férhet hozzá az A-hoz.

    2.
    - Milyen gyakorlati haszna van, és mikor érdemes belső static osztályt használni a sima osztály helyet?

    3.
    - Ősosztály példánya hajthat-e végre, az alosztály példányán műveleteket, ha az privát láthatóságú.
    Példa.: Ez így lehet nem állja meg a helyét, meg én Interfésszel valósítanám meg, de elméleti kérdés... Legyen adott egy publikus Állat ősosztály, itt van például az ugat() metódus. És van a publikus Kutya és a privát Farkas alosztály.
    Legyen egy függvény az állatban: hajtóvadászat(Állat állatPéldány) néven, amely meghívja az állat példányhoz tartozó ugat() metódust.
    Ha ezt a hajtóvadászat(Állat állatPéldány) függvényt meghívom úgy, hogy a paraméterben egyszer a Kutya osztály egy példánya van, akkor azon az ugat()-ot végre tudja hajtani, de ha Farkas osztály egy példányánál már nem tudja meghívni az ugat() fv-t igaz? Gondolom ilyenkor a JVM RuntimeException-t kéne dobnia.

    4.a
    Ha egy ősosztály privát (és vele együtt, minden adattag, és tagfv.), és rendelkezik alosztállyal, akkor a fordító automatikusan legenerálja az alosztály számára is a privát adattagokat/tagfv-t?
    4.b
    Vagy az ősosztály protected/privát, és van benne 1 privát adattag. Akkor az alosztály is megkap minden egyes adattagot, még a privát-ot is, csak annyi a különbség, hogy nem fér hozzá az ősosztály ezen privát adattagjához.
    Pl: Állatnak van a privát futás(), és van a publikus Farkas alosztály, akkor a farkas példányának is van futás() nevű fv-e, igaz?
    De akkor megint itt jön a helyetesíthetőség elve, hogy ha Egy Feldolgozó osztályban (Például egy függvényt, amely paraméterben egy állat osztályt vár)meghívom az Állat osztály egy állat nevű példányát, akkor a futás() fv-hez nem férek hozzá. És ha az állat példány helyett egy farkas példányt hívok meg, akkor annak a futás()-a meghívható...
    Nem tudom, hogy mennyire voltam érthető...

    5.
    Akkor ha egy osztály publikus vagy privát, és az adattagjainál nincs külön feltüntetve, hogy milyen láthatóságú, akkor automatikusa az osztály láthatóságát kapják meg, igaz? :)

    arn: http://nagygusztav.hu/java-programozas -ez az előbb említett fórumtárs által javasolt könyv, egy sokkal rövidebb és magyarosított változata.(néha van egy olyan érzésem, hogy csak egy fordító progi lett ráeresztve az eredeti könyvre...) A Thinking in Java könyv, tényleg nem rossz, de én félbe hagytam anno. De nagyon részletes, és még Design Pattern példák is vannak benne!

    1.
    - Miért fér hozzá a tartalmozó osztály?
    - Itt most egymasba agyazott Classokrol van szo..Class classon belul (ez nem oroklodes!). Vegyunk pl egy sima public classot. Te a classon kivul tudsz a classbol objectet csinalni, hozzafersz a public valtozoihoz/metodusaihoz, a privathoz viszont nem! A privatot csak a class/object maga tudja hasznalni es ha ugy akarja az isten akkor kozvetlenul te is (egy public metodus a classon belul ami hozzaferest ad a privat valtozohoz). Namost ha egy class tartalmaz egy masik privat classot, akkor ahhoz is csak o fer hozza kozvetlenul.
    public class A{
    private class B{}
    }
    Leegyszerusitve vehetjuk ugy, hogy a B class az Aclass sajatja, tehat hozzaferhet.

    2.
    http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
    Az elso valaszban van leirva peldaval, hogy hogyan ferhetsz hozza. Ha sima inner class-bol akarsz objektumot csinalni, akkor ha jol tudom eloszor kell egy object-et csinalnod a kulso classbol es csak utana tudsz a belsobol, mert a belso csak a kulson belul "el". Static-ot meg talan tudsz siman Kulso.Belso valtozo = new Kulso.Belso() ;

    3. passz :) Amugy azt polymorfizmusnak hivjak, amikor egy alosztalyt az ososztalyanak tekinted. Viszont igy hirtele fogalmam sincs, mi tortenik, ha privat class orokol az allattol..privat classbol egyaltalan lehet objektumot csinalni? :D

    4. Tudtommal privat dolgokat NEM orokolnek az alosztalyok. Ha maga az ososztaly privat, akkor lehet ott dob hibat, amikor az alosztaly akar orokolni (tipp).
    Protected egy olyan privat dolog, amit lehet orokolni, de kivulrol szinten nem fersz hozza.

    5. Amennyire tudom, egy classon belul alapbol minden privat.

  • Davs
    tag

    tudnatok vmi jo javatutorialt, vagy konyvet ajanlani ujrakezdoknek? :)

    kb 10 eve tanultam, meg programoztam is jopar nyelven (c, pascal, delphi, etc), illetve webfejlesztokent is dolgoztam (php, mysql vonalon). oop teruleten sincs tul nagy tapasztalatom (regen tanultam, parszor hasznaltam, de kb ennyi), igy nem artana arrol sem vmi.

    kicsit kesobb meg a webfejleszteses resze erdekelne.

    http://mindview.net/Books/TIJ4
    En ajanlanam a Thinking in Java -t, van benne oop elmelet/gyakorlat/sok pelda, en is olvasom epp, csak ajanlani tudom!

  • Davs
    tag

    Heló,

    nem ;]

    A "nested class-od" adattagjainak láthatósága alapértelmezetten package.

    remélem tudod, hogy a static class csak belső osztályként jöhet létre (nested class), és nem azt jelenti, hogy ez egy singleton.

    statikus nem a láthatóságra vonatkozik, hanem hogy az adott tag (metódus vagy mező) nem objektum példányhoz, hanem osztály példányhoz tartozik.

    Kicsit több tudást igénylő példa, de ugyanazon nevű osztályból (package nevet is beleértve) szélsőséges esetben több példány is létezhet egy jvm-en belül (egy futtatás alatt), ha azok különböző classloaderekkel lettek betölve. (most nem objektum példányról beszélek, az egyértelmű, hogy egy osztálynak több példánya is lehet) -- A java classloaderek kicsit hasonlítanak a PHP-s auto-load classloaderekhez.

    az osztálytagok (metódus vagy mező) alapértelmezett láthatósága a package. Így ebben az esetben is. Mivel azonban a nested classod privát, ezért kívülről egyébként sem férhetsz hozzá az osztályhoz, így az adattagokhoz sem, csak és kizárólag a tartalmazó osztályból.

    Tehát az Elem osztályod tagjaihoz csak a tartalmazó osztályból férhetsz hozzá, tulajdonképpen magához az osztályhoz is.

    Lehet egy nested class nem statikus is

    Ha a belső osztályod nem static, akkor egyértelműen hozzá van kötve az őt tartalmazó osztály egy példányához. Példányosítani kicsit furcsa szintaxissal kell:

    KulsoOsztaly.BelsoOsztaly belsoPeldany =
    kulsoOsztalyPeldany.new KulsoOsztaly.BelsoOsztaly();

    belső osztályból a tartalmazó külső osztálypéldányra hivatkozni pedig:
    KulsoOsztaly tartalmazoOsztalyPeldany = KulsoOsztaly.this;

    http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html nézd meg a példakódot

    KulsoOsztaly.BelsoOsztaly belsoPeldany =
    kulsoOsztalyPeldany.new KulsoOsztaly.BelsoOsztaly();

    helyett veletlenul nem igy van ez jol? :

    KulsoOsztaly.BelsoOsztaly belsoPeldany =
    kulsoOsztalyPeldany.new BelsoOsztaly();

  • Davs
    tag

    Hali!
    Windowson az Environment Variables-en belul van (user es system-en belul is) egy CLASSPATH valtozom, aminek a tartalme: .;D:\workspace\Java
    D:\workspace\Java legyen ezentul <path>

    <path>\com\davsx\util\Print.java tartalma:

    package com.davsx.util ;
    import java.io.* ;

    public class Print{
    public static void print(Object o) {
    System.out.println(o) ;
    }
    public static void print() {
    System.out.println() ;
    }
    public static void printnb(Object o) {
    System.out.print(o) ;
    }
    }

    Ezt <path> alol a javac com\davsx\util\Print.java paranccsal leforditottam .class-ra (amit ott is hagytam)

    <path>\PrintTest\PrintTest.java tartalma:

    import static com.davsx.util.* ;

    public class PrintTest
    {
    public static void main(String[] ars){
    print("Hello") ;
    }
    }

    Es amikor probalnam a <path> alol parancssorbol futtatni a javac PrintTest\PrintTest.java parancsot (vagy akar a javac -cp . PrintTest\PrintTest.java -t) a package com.davsx not found hibauzenetet kapom. Mit csinalok rosszul?

  • Davs
    tag

    Mert hogy én úgy tudom, hogy mindig kell lennie egy publikus osztálynak.
    Persze kipróbáltam, és publikus osztály nélkül is ment. Parancssorból és Netbeans-ből is.

    Ha jol tudom fileonkent max 1 public class lehet es alapbol publicnak veszi a class-t, ha nem raksz ele semmit.
    Amugy parancssorbol hogy kell leforditani/lefuttatni 2 java class-t? Egyikben a main, masikban meg pl es sajat object..javac MyClass1 MyClass2 ?

  • Davs
    tag

    Javaslom ezentul a java -cp . MyClass stilusu futtatast.
    a -cp a CLASSPATH-ot allitja be "."-ra, vagyis az aktualis konyvtarra

  • Davs
    tag

    Hú ezt én sem értem. Valaki elmagyarázhatná nekem, a mysql-nek a class path-a miért határozza meg a legegyszerűbb hello program futtatását. Amikor ennek a programnak nincs is szüksége adatbázis kapcsolatra. Vagy egy hibás class path megadás blokkolja a legegyszerűbb progi futtatását is?

    Hmm lehet, hogy ha nem talal CLASSPATH valtozot a java, akkor az aktualis konyvtarra allitja be maganak..de ha talal egyet, amiben nem szerepel a "." (aktualis konyvtar), akkor talan csak a CLASSPATH-ban megadott konyvtarakban keres

  • Davs
    tag

    declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    A JDK-m pedig az /opt/java/jdk alatt van

    Viszont a telepítésnél ezeket az utasításokat adtam ki az Oracle Java kicsomagolása után:
    sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk/java" 1
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk/javac" 1
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/jdk/javaws" 1

    Még kezdő Linuxos vagyok, szóval nem teljesen értettem, hogy ezek mit csinálnak, viszont a Google ezt ajánlotta.

    Az en javaslatom amugy probaltad? :D

    java -cp . Salution

    Igy elvileg ha a CLASSPATH rosszul van beallitva, akkor futtatas elott a "."-ot hozzaadja (nemtudom veglegesen-e)..De most, hogy manualisan hozzairtad a "."-ot, mindegy :)

  • Davs
    tag

    Itt valami nem kerek....

    Beírtam tök ugyanazt mint te, majd mentettem.
    Ezután parancssorban:
    javac Saluton.java

    Majd miután végzett
    java Saluton.

    és rendben volt.

    Btw nalam is..csak ugy tudtam ezt a hibat kigeneralni, ha a Salution utan odairtam a .class -t is

  • Davs
    tag

    Error: Could not find or load main class Saluton

    Proba:
    nyisd meg a windows parancssort, navigalj el a .class fajlodat tartalmazo konyvarhoz, majd:
    java -cp . Salution

    @kispx
    Igen, class nelkul kell megadni, de o is ugy adta meg "...java Saluton -t irtam parancsnak ..."

  • Davs
    tag

    Sziasztok. Most kezdtem a java programozási nyelvel foglalkozni. Olyan problémába ütköztem, hogy megírtam leírás segítségével a Hello World! általánosan elterjedt programot experanto nyelven, windows jegyzettömbel, majd parancssorban beléptem abba a mappába ahol ez található, probáltam lefuttatni a javac-al de nem sikerült. java develompment kitem van 7-es verzió. Windows 7-em van. A parancssor azt irja nem ismeri fel belső vagy külső parancsként, futtatható programként vagy kötetfájlként. Segítsetek!

    Windowsos jegyzettob helyett probald meg inkabb pl a Notepad++ t

  • Davs
    tag

    Most tesztelgettem a programot system out-al kiírattam a bevitt jelszót. A fura dolog hogy a pastelt jelszónak a közepébe bekerül egy kérdőjel.
    [link] felül a textfield, alul pedig a system outja a bevitt értéknek.
    Ez micsoda?

    Egy nagyon noob javaslat, hogy kiiratni asciiben, hogy tudjuk milyen karakter az? (sztem nem tuti, hogy kerdojel, lehet vmi specialis karakter)

  • Davs
    tag

    Sziasztok!
    Egy programon dolgozok, a fő része egy for függvény, és minden futásnál egy sort (amit a parancssorból a felhasználótól kap) ír a meghatározott fájlba.
    Ez működött parancssorban, de most egy GUI-t akarok csinálni hozzá, és ugyanazt a bemenetet egy szövegmezőből kapná. A kérdésem az lenne, hogy lenne megoldható, hogy a for akkor menjen csak tovább ha megnyomok egy gombot (a gombnyomásra beolvassa a szöveget a szövegmezőből, de ez már megvan)?

    Nemtudom pontosan hogy van javaban,de szerintem a gombhoz hozza kell rendelni egy onClickListener feleseget..szoval ha rakattintasz, akkor fusson le egy megadott kodreszlet..

  • Davs
    tag

    Majd az alpha kódok jöhetnének! :)

    AAA mostanaban nagyon nincs idom semmire, de azert par commentet dobtam bele
    http://www27.zippyshare.com/v/24165820/file.html

  • Davs
    tag

    Hát egy Very Hard, vagy Extreme nincs meg ebből a két módszerből (elég sokat játszottam egy időben) - még csak részleteiben sem. Kell még mellé vagy 3 másik módszer: dupla-, tripla kizárás, rejtett duplák, triplák. Ezekkel általában megoldható egy VH, extrémhez még mindig kellhet még mélyebb technika. Utána színezés (ez már BF).

    mod:
    Szerintem nem volna sokkal gyorsabb két dimenziósban sem. Eseteg négy dimenzióval :)
    Én sima tömbbel csináltam, generált (illetve konfigurálható) régiókkal. Lehet, hogy ez lassabb, de el tud boldogulni nem szabványos felépítésű táblával is.

    AE

    Tudnal linkelni egy oldalt, ahol ilyen very hard, vagy extreme sudokuk vannak megoldasokkal egyutt? En neztem egy oldalon extreme puzzleket es siman megoldotta..telefonomon rajta van az app, ki tudom probalni :D

    http://www.extremesudoku.info/sudoku.html Innen probaltam egy extreme-t, ~1,5 sec korul megis oldotta

  • Davs
    tag

    Milyen két módszerrel oldod meg a feladványt?

    AE

    Igazabol 3..az elejen, amig talal valamit fut a "single candidate" es a "hidden single candidate", aztan ha ezek lefutottak es meg nincs befejezve a sudoku akkor max 3 bruteforce

    ...erjek haza melobol es feldobom..de amugy nagyon alpha fazisban van a dolog, epphogy mukodik :D egydimenzios tombben van jelenleg a sudoku tabla, azt mindenkeppen at kellene csinalni ket dimenziosra, szerintem ugy gyorsulnanak a muveletek..bar nem nagy eroforrasigenyes dolog egydimenziosbol kiszamolni, hogy melyik elem tartozik ugyanabba a sorba,oszlopba,blokkba (szerintem..1-2 osztas, kivonas,% a for ciklusban)

  • Davs
    tag

    Nagyon OFF:
    Hogy így felkeltetted az érdeklődésem összedobtam egy bruteforce (sor/oszlop/block érték-kizárás+rollback-kel) c# kódot - 225 ms alatt "megoldja" a teljesen üres táblát (első jó megoldás). Kis akarattal átültethető Java-ra is (bár használtaam benne egy kis LINQ-et az egyszerűsg kedvéét).

    AE

    hat le ugyan nem mertem, de az en kodom is latszatra azonnal megoldja a sudokut az i3-2330M-emen...de androidon tart ~1masodpercet...ott mar van lathato delay

  • Davs
    tag

    Gondolom brute-force, érték-ellenőrzéssel :)
    (de kódot azért szívesen látunk) :D

    AE

    Ha ez nekem szolt, akkor elmondom, hogy bruteforce-ot csak vegso esetben hasznaltam, miutan az elotte levo 2 modszer nem tudta befejezni az egesz sudoku-t. Feltehetem a java kodot, amint lesz egy kis idom dobok bele par kommentet..Azutan az a java kod ment 1az1-ben szinte at androidba is..

  • Davs
    tag

    Sikerult osszehoznom a sudoku solvert, http://www.sudoku.ws/extreme-5.htm errol az oldalrol is megcsinalja az extreme puzzleket is, gepemen szinte rogton vegez, androidon (gt540 7227-es 600mhz-s procival) ugy ~1,5-2masodperc alatt kesz, szoval kedzhetem kicsit optimalizalni a kodot :D
    Amugy a vegcel az, hogy androidon lefenykepezem a sudoku feladvanyt, felismertetem vele es vegul megoldom

  • Davs
    tag

    Tudsz olyat, hogy var.get(0).get(0) csak ebbe nem nehéz belezavarodni :)
    De ha jól értem mit szeretnél akkor azzal jársz a legjobban ha csinálsz magadnak egy Candidates classt ami pl egy ArrayListben tárolja a számokat, és abból csinász egy 2 dimenziós tömböt(generikusokból nem tudsz tömböt csinálni ugyanis, de ha becsomagolod a dolgot egy saját osztályba akkor már jó vagy). Aztán ha kiürült, akkor vagy az osztályt írod meg úgy, hogy ezt meg tudja mondani magáról, vagy egyszerűen null-ra állítod helyét a tömbben.

    Koszi, osszehoztam vegul :D minden lett benne :D Vegulis lett egy Candnum classom, benne egy privat List<List<Integer>> list = new ArrayList<List<Integer>>() ;
    list.size() az inicializalas utan 81, mindegyik eleme vagy 'null', vagy egy List<Integer> a lehetseges szamokkal..ha esetleg erdekel, feltehetem a kodot :)

    Meg egy masik dolog..A CandNum classon belul van egy setCand(i) //i->0-80 metodus, ami minden egyes mezohoz kiszamolja a lehetseges szamokat, es ha valahol csak 1db van, akkor azt automatikusan beirja a sudoku[] tombbe (ahol az eredeti szamok vannak).
    Az erdekelne, milyen modszerrel lehetne megviszgalni, hogy egy parancs(konkretan a setCand) lefuttatasa utan, valtozott-e egy int[] tomb (konkretan a sudoku[] tomb). Elso gondolatom, hogy osszeadom az elemeit..esetleg van gyorsabb megoldas? Arra kell, hogy amig valtozik a sudoku[] tomb, addig futtatnam a setCand() metodust. Foleg bonyolultabb sudokuknal feltetelezem, hogy tobbszor is le fog futni, ezert erdekelne a legkevesbe eroforrasigenyes megoldas

  • Davs
    tag

    Ez egy picit nincs túl bonyolítva? :D
    Már tervbe van véve, hogy 1 hónap múlva fogok a generikusokról részletesebben tanulni, de ez szerintem túl bonyolult így.
    Esetleg azt csinálnám, hogy az <ArrayList<int>> típusból egy osztályt csinálnék ami dolgozik ezekkel az ArrayListekkel, és akkor lehetne rá Get és Set metódusokat írni. Ha nagyon ezt akarod követni.
    És akkor így talán egyszerűbb, átlátod, és az ArrayList<int>-eket objektumként kezeled. És tudnál metódust írni amellyel eléred az ArrayList elemeit is :)

    Én így ennyit tudtam mondani, mint lelkes java tanuló :). De majd jönnek az okosabbak ;)

    De, tutira tul van bonyolitva..igazabol osszesitve kell egy 81 nagysagu tarolo (9*9), aminek minden eleme lehet 0, vagy egy tomb es ennek a tombnek a merete lehet 1-tol 9ig es lehessen barhonnan torolni belole :D Mondjuk most, hogy igy megfogalmazta, lehet eleg lenne egy tarolo, ami vector<int>-eket tarolna siman. C++-ban egyszeruen lehetett .push_back()-al hozzaadni, es .erase()-szel tetszoleges elemet torolni belole..talan itt is mukodik ez :D utananezek...most mar csak akkor az a kerdes, hogy azt a 81db vector<int>-et miben taroljam :D

    Amugy ha lattok valami esszerubb leirast a sudoku problema megkozeliteserol, akkor nyitott vagyok mindenre :D

  • Davs
    tag

    Hmm esetleg egy ilyen ArrayList-ceptionnek van ertelme?

    ArrayList<ArrayList<int[]>> var = new ArrayList<ArrayList<int[]>>() ;

    szoval ahogy en ertelmezem, a var egy ArrayList, ami ArrayList<int> -et fog tartalmazni..
    Viszont ami most nem vilagos, hogy hogy erem el az egyes elemeket :)
    var.get(0)-val pl elernem a tombot, ami az elso elem tartalmazott.. ezt most hozza kell rendelnem egy masik ArrayList<int[]>-hez, es ujra .get()-el kell elerni az egyes elemeket (1,2,3...), vagy van egyszerubb megoldas is?

  • Davs
    tag

    Hali, kellene egy kis segitseg. Sudoku-fejto programocskan munkalkodok (androidra, de most azt hagyom, kulon javaban szeretnem implementalni az egeszet, aztan atvinni oda).
    Adott a sudoku[] tomb, 81elemmel ugyebar, mindegyik eleme vagy <1,9> szam, vagy 0, ha ures. Addig futna a program, amig van 0 a sudoku tombben, mert ugye addig nincs megoldva.
    Ott tartok, hogy minden mezohoz el szeretnem menteni a lehetseges szam-jelolteket es kicsit tanacstalan vagyok abban, hogy milyen adattipust hasznaljak. A lenyeg, hogy minden eleme egy tombbot tartalmazzon, tehat a candidate[0]={1,2,3}, candidate[1]={8,9} , esetleg, ha nincs semmilyen lehetoseg (ergo azon a mezon mar meg van adva a szam), akkor tomb helyett egy egyszeru (int) 0 szerepelhetne. Ugy lenne jo, hogy azokbol a tombbol torolhessem az elemeket, pl ha a bal felso sarokban (ahova eddig mehetett 1,2,3) ki tudom zarni a 3-ast, akkor torolhessem a tombbol, igy candidate[0]={1,2} maradna. Eddig valahol itt tartok, mukodni mukodik, csak nemtudom, hogy az int[][] tombbol lehet-e torolni elemeket..

    public static int[][] candidates() { //kigeneralja a tombot a lehetseges szamokkat
    int[][] cand = new int[81][] ;
    for (int i = 0; i < 81; i++) { //vegigmegy a sudoku[] tombon
    if (sudoku[i] != 0) { //ha a szam mar meg van adva, akkor 0-t allit be
    cand[i] = new int[1] ;
    cand[i][0] = 0 ;
    } else { //ha a szam nincs megadva, azaz =0
    int[] tmp = getCand(i) ; //getCand ellenorzi, hogy az adott mezoben mely szamok lehetnek (sort es oszlopot nezi csak)
    cand[i] = new int[tmp.length] ;
    cand[i] = tmp ;
    System.out.println(cand[i][1]) ;
    }
    }

    return cand ;
    }

    es itt lenne jo, ha pl a cand[0]-ban levo tombbol tudnek torolni..C-ben vectoroztam anni, most is probaltam ArrayList-ezni, csak nemigazan tudtam deklaralni ugy, hogy az adott valtozom minden eleme egy tombbot tartalmazzon..igy roviden ennyi a problemam :D

  • Davs
    tag

    Hali!
    Nezegettem mar par tutorialt, megyeket a Java, stb. Az lenne viszont a kerdesem, hogy a vilagon ugye most a legelterjettebb nyelv a java, ha jol emlekszem 20% felett van (nemtudom pontosan melyik kutatas alapjan olvastam ezt). Dilemmaban voltam, hogy a Javanak, vagy a C++-nak alljak-e neki, vegul Java mellett dontottem (amit abszolut nem banok, objektumokkal kapcsolatban is megtanultam sok olyan dolgot, amit kesobb mas nyelvnel is tudok kamatoztatni).
    A kerdesem az lenne, hogy hol hasznaljak a Javat? Ugye mobil/android szektor az vilagos. De azonfelul? Windows-os/Linux-os GUI-s programokhoz en valahogy a C++-t szimpatikusabbnak talalom, foleg Windowsra, ahol nem kell JDK-t telepiteni kulon..foleg, hogy a c++ ha jol tudom "gyorsabb". Nem otthoni, inkabb ilyen ceges viszonylatban erdekelne a dolog, hogy ha pl fosuli utan Java fejleszto lennek, akkor kb mire szamithatok. Tehat milyen teruleten hasznaljak a Javat?
    Koszonom a valaszokat

Új hozzászólás Aktív témák