Új hozzászólás Aktív témák
-
Ha hozzáadtad a c:\Windows\System32 elérési utat, onnantól kezdve el kell tudni érned a parancssorból a java.exe-t és a javaw.exe-t. Nem írhat olyat, hogy nem találja ezt a programot. Ha ezt írja, akkor vagy nem jól adtad hozzá, vagy nem indítottad újra a parancssort, miután hozzáadtad.
Egyébként nagyon kevés elérési út van nálad a path környezeti változóban. A systemrootnak defaulton ott kéne lennie. Valaki vagy valami "tisztogatást" végzett nálad... -
thboxx
aktív tag
válasz
Superhun #3195 üzenetére
"C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files\PC Connectivity Solution\;C:\Program Files\Android\android-sdk\platform-tools\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Windows Live\Shared"
ezek vannak a path környezeti változóban...
(#3196) gygabor88: kicsit hétköznapibban fejtsd ki kérlek...
Szerk.: hozzáadtam a system32-t a környezeti változókhoz... de semmi
-
skoda12
aktív tag
"Error: could not find or load main class D:\.......jar"
Nem minden jar futtathato. Sot, tipikusan a legtobb jar nem futtathato es valoszinuleg te is ilyet kaptal. A masik lehetoseg, hogy az alkalmazas keszitoje rosszul csomagolta be a programot es nincs beallitva main class a manifestben. Ilyenkor ugyan meg elindithatod a programot, de tudnod kell a main class pontos nevet hozza.
-
dany27
őstag
Üdv!
JTree-vel szeretném megjeleníteni a településeket megyékre lebontva.
Hogy tudom azt elérni hogy ha bent vannak a megyék a fában, és tölteném be a településeket egy fileból akkor tudja hogy melyik megye alá kell beszúrnia az adott települést?
Az megvan hogy hogyan döntöm el hogy melyik megye, csak azt nem hogy ezután hogy tudom megmondani neki hogy na ezt most ide szúrd be szépen...
Van egy telepulesek osztalyom melynek van egy megyeID adat tagja is, ez alapján könnyen megtudom mondani h az adott megyéhez melyik települések tartoznak.Előre is köszi a válaszokat!
-
skoda12
aktív tag
válasz
bucsupeti #3176 üzenetére
"A kérdésem az hogy a felvázolt architektúra szerintetek rendben van? Illetve jó megoldás-e az egyetlen session használata?"
Mint mondtam, a Session inkonzisztens allapotba kerulhet, igy nem erdemes csak egyet hasznalni. Ez a javadocban is le van irva.
A masik, hogy a Session nem thread safe, igy leginkabb a session-per-request megoldast szoktak kovetni. De ez nem azt jelenti, hogy ha egy muvelethez tobb select / insert /akarmi kell, akkor mindegyikhez letre kellene hozni egy sessiont.
A statikus dolgokat felejtsd el, unit tesztelhetetlen. Ritkan van ertelme (konstants, logger, ...), de alapvetoen csak thread safety problemakhoz vezetnek. Jelenleg is tobb kulonbozo metodusod dolgozik egy statikus nem thread safe peldanyon, tehat neked kell gondoskognod rola lockolassal vagy valami mas modon, hogy egyszerre csak egy valaki hasznalja. -
-
bucsupeti
senior tag
válasz
skoda12 #3171 üzenetére
Köszönöm az eddigi válaszokat. Közben megoldódott a dolog egy session.clear() oldotta meg a problémát a tranzakció lezárása után.
"Ez anti-pattern. Mivel desktop approl van szo, gondolom csak egy user hasznalja egyszerre. Boven eleg akkor nyitni uj sessiont, ha az elozo inkonzisztens allapotba kerul."
Az igaz hogy desktop app, de ez miért is vonja maga után hogy "csak egy user használja egyszerre"?
Desktop app, de központi adatbázissal dolgozik. Az alkalmazás pedig a felhasználók gépein található meg.Egyébként nagy baj az ha egyetlen session-t használok a futás alatt?
Az architektúra úgynéz ki, hogy vannak a perzisztens osztályok, ez mellett van egy üzleti logikát megvalósító osztály (UzletiLogika) és van a kliens, ami bármi lehet, jelenleg egy desktop swing GUI.
Az UzletiLogika osztálynak egyetlen statikus adattagja van, ami nem más mint egy Session. Ezen dolgozik az összes metódus. A metódusok a kliens(ek)nek szolgáltatnak adatokat, amik különféle egyszerű és összetett adatszerkezeteket adnak át. A perzisztens osztályok adattagjait alakítják át listákká, vektorokká stb...
Paraméterül azonosítókat kapnak és soha nem adnak vissza perzisztált objektumot.
Így az UzletiLogika osztályban dolgozik csak a Hibernate. A GUI csak meghívja az ottani metódusokat és valamilyen nem perzisztens adatot kap, amit megjelenít.Most már működik a program.
A kérdésem az hogy a felvázolt architektúra szerintetek rendben van? Illetve jó megoldás-e az egyetlen session használata?
-
modder
aktív tag
válasz
bucsupeti #3170 üzenetére
Hogyan törölsz?
Ha simán törlöd a detail entitást, de nem nem frissíted a parent entitás (a másik táblából) Set-jét és nem mergeled (sorry nem vágom pontosan a hibernate-es terminológiát) őt, akkor a hibernate cache úgy érzékelheti, hogy az objektumon nem történt semmi változás (a kapcsolatot csak az egyik oldalról törölted, a parent felől nem), ezért nincs oka újra lekérdezni olyan result setet mégegyszer.Próbáld meg, hogy a parent entitás Set-jéből törlöd a detailt, majd mergeled a parent entitást.
Remélem ez menni fog.
-
MrSealRD
veterán
válasz
bucsupeti #3170 üzenetére
Lehet, hogy nem pont ez kell neked, de amennyire nem látunk a kódból semmit, annyira talán ez is jó lehet: [link]
Egyébként gondold végig.
Mi a jTable adatforrása? Elvileg azon objektumok halmaza( valamilyen kollekció) melyeket a hibernate-en keresztül kezelsz és az adatbázis táblák rekordjainak feleltethetőek meg...Akkor most jön a kérdés...Pontosan honnan is törölted? (Ha a hibernate és a DB látja...) De a jTable nem...
-
skoda12
aktív tag
válasz
bucsupeti #3170 üzenetére
Kod nelkul nehez megmondani, hogy mi a baj, de nem nyelsz el egy catch agban egy exceptiont, ami nincs kiloggolva?
"Új session-t indítok minden egyes lekérdezésre"
Ez anti-pattern. Mivel desktop approl van szo, gondolom csak egy user hasznalja egyszerre. Boven eleg akkor nyitni uj sessiont, ha az elozo inkonzisztens allapotba kerul.
-
bucsupeti
senior tag
Sziasztok!
Adott egy Hibernate-et és MySQL-t használó NetBeans alatt készített alkalmazás GUI-val.
Két táblázat van benne, amiket feltöltök a perzisztens objektumokkal. A második táblázat az első detail táblája, azaz az egyik adattagja (ami Set típusú) tételeit tartalmazza.
A lényeg az hogy ha törlök valamit a detail táblából akkor látom az SQL parancsot (delete) az output ablakban. Az SQL adatbázist megnézve látszik hogy törlődött a rekord, viszont a vizuális komponensben (jTable) nem látszik a frissítés. Természetesen újra feltöltöm a táblát, de nem frissül. Olyan mintha valahol (cache?) ott maradna az adat. Új session-t indítok minden egyes lekérdezésre, flush() és evicat() meg minden van a törlő művelet után, de nem frissül. Az output ablakban látszik hogy a select nem fut le újra, pedig ott van a lekérdezés és debugolva is ellenőriztem végrehajtja a sort, de nincs adatbázis kérés mögötte.
Ha kilépek és újraindítom a progit akkor már minden rendben látszik.Hogy lehet rábírni hogy frissüljön rendben minden? Mi a francért nem frissül?
-
modder
aktív tag
válasz
Superhun #3157 üzenetére
Én nem keverném ezt bele, mert az equals()-nak és a hashCode()-nak az egyedet kell tudnia azonosítania, és nem egyetlen tulajdonságát. Végtelenféle háromszöget lehet ugyanazzal a területtel. Szóval ez ellent mond a Java equals()-ra és hashCode()-ra vonatkozó contractjának.
Nem is adna jó eredményt, mert a terület nagy valószínűséggel Float lesz, amit nem tudsz még javában sem alapból úgy összehasonlítani, hogy mindig jó eredményt kapj, pláne nem az == operátorral:
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Float.html#equals(java.lang.Object)Nem tudom mire kell itt a HashSet, de én úgy oldanám meg a dolgot memóriahatékonyan, hogy:
1) csinálok egy ArrayList<Haromszog> haromszogek listát
2) csinálok egy másik ArrayList<Float> teruletek listát
3) ahogy generálom a háromszögeket a ciklusban, egy belső ciklusban minden legenerált háromszögre végigmegyek a 'területek' összes elemén és megnézem, hogy benne van-e az új háromszög területe, így:
if(Math.abs( aktualisTerulet - ujHaromszogTerulet) < 0.001f)
benne van
else
nincs benne, hozzáadom a háromszögekhez a háromszöget, és hozzáadom a az ujHaromszogTeruletet a teruletekhezHa pontosabb float egyenlőség vizsgálat kell, ezt találtam neten http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
esetleg gyorsabban futó megoldást is találhatsz, ha valamilyen orderes listet használsz pl http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#binarySearch(java.util.List, java.lang.Object, java.util.Comparator) -vel keresel a területek között
-
-
kispx
addikt
Magyarul le van itt írva. A második bekezdés az érdekes, mivel neked már fent van a jdk.
"Windows operációs rendszeren parancssorból, vagy .bat állományból:
SET PATH=%PATH%;c:\Program Files\java\jdk1.5.0\bin ; ."Résznél természeten neked más elérési útvonalad lesz a jdk bin mappájához.
-
kispx
addikt
parancssorban próbáld meg a program mappájában kiadni:
java -jar fájlneve.jarDe előszór a PATH változót állítsd be. (Feltéve ha még a java.exe elérési útvonala nincs benne)
-
thboxx
aktív tag
Hali!
Nem tudom, jó helyre írok-é'
, de hátha... Szóval van egy .jar kiterjesztésű kis alkalmazásom, amit elvileg katt2x aztán megy, mint egy kis szutyok egy exe-s ősgame... de nálam nem történik semmi. Ill. pillanatra beugrik a parancssor, aztán ahogy jött, úgy el is tűnik... Legújabb JDK van fent a gépen... Már a hajamat tépem tőle...
Valaki tudna nekem segíteni?
Üdv.
-
válasz
DreaD88 #3153 üzenetére
Definiáld felül a háromszög osztályban az Object ősosztály equals metódusát, és akkor adjon vissza igazat, ha a két háromszög területe megegyezik. Így amikor hozzáadogatod a háromszögeket a HashSet-hez, azok nem kerülnek bele a halmazba, amelyeknek a területe már szerepel.
Kódban ez vhogy így néz ki (nálam most a háromszög osztályt Triangle-nek hívják):
@Override
public boolean equals(Object o) {
if (o instanceof Triangle) {
Triangle t = (Triangle) o;
if (t.getArea() == getArea()) {
return true;
}
}
return false;
}
// A hashCode metódust is illik felüldefiniálni,
// ha az equals-t felüldefiniálod. Az a lényeg,
// hogy egyezzen meg annak a két objektumnak a hashkódja,
// amelyekre az equals igazat ad vissza.
@Override
public int hashCode() {
return (int) getArea(); // ezt lehet máshogy is, de a célnak megfelel
} -
DreaD88
tag
Köszi mindkettőtöknek, nézem az új infókkal...
Am a sorrend lényegtelen, mert generáltam 15 db abc oldalú háromszöget, mindegyiknek külön külön véletlen az oldalhossza és heron képlet alapján kiszámolom a területüket, ez meg is van, már csak annyi van hátra, hogy összehasonlítom a generált háromszögek területét, hogy ne legyen 2 egyforma.
-
Lacces
őstag
válasz
DreaD88 #3153 üzenetére
Én úgy tudom, hogy alapból csak egyet is rak bele. És ezért lassú az elem beillesztése, de gyors az elem visszaadása. De mindig van tőlem okosabb a fórumban, érdemes rájuk várni
Amúgy itt találsz példákat a hashset műveletekhez, ha lejebb mész, akkor látsz még további témákat, remove, add, select stb.
Van a
Set h = new HashSet();
HashSet<Integer> h = new HashSet() típusú is -
Karma
félisten
válasz
DreaD88 #3153 üzenetére
Ha a "hashset-be adom meg" alatt azt érted, hogy létrehozol egy HashSetet, konstruktorban átadva a már meglévő kollekciódat; a "mindenből csak egyet ad vissza" alatt meg iterációt (foreach vagy manuális iteráció, mindegy) akkor igaz.
Azzal a kitétellel, hogy az elemek sorrendje összezilálódhat, mert semmi garancia nincs. Ha azt akarod, hogy a sorrend is megmaradjon, LinkedHashSetet használj.
-
DreaD88
tag
Helo!
Nemrég kezdtem javaban programozni és a hashset-el van most problémám...
Valaki le tudná írni, hogy kell használni?Jól tudom azt, hogy ha van mondjuk egy kollekcióm es hashset-be adom meg őket, akkor a hashset kiszűri az azonos elemeket és mindenből csak egyet ad vissza?
-
_kovi_
aktív tag
Sziasztok!
Segítsetek nekem légyszi. Nem bírom beállítani XP Pro-n a CLASSPATH értéket.
Hogy SciTE-vel tudjak fordítani.
Netbeans-t is használok, de a SciTE is megy mellett párhuzamosan.Egyáltalán mit kell oda beállítani, milyen értéket a JAVA könyvtár bin könyvtárát?
Próbáltam már mindent, amit a google-val lehet keresni, de nem működik...
Tesztre a CMD-ben a javac-ot írom be. CMD-ben a Java parancs az rendben lefut 1 oldalnyi szöveggel.Köszi,
-
D4nte
csendes tag
A legegyszerűbb akkor, ha meg is mutatom, amit leírtam.
public class Credits {
public static void main(String[] args) {
// a film adatainak beállítása
String title = "The Piano";
int year = 1993;
String director = "Jane Campion";
String role1 = "Ada";
String actor1 = "Holly Hunter";
String role2 = "Baines";
String actor2 = "Harvey Keitel";
String role3 = "Stewart";
String actor3 = "Sam Neill";
String role4 = "Flora";
String actor4 = "Anna Paquin";
// az adatok megjelenítése
System.out.println(title + " (" + year + ")\n" + "A "
+ director.toUpperCase() + " film.\n\n" +
role1 + "\t" + actor1.toUpperCase() + "\n" +
role2 + "\t" + actor2.toUpperCase() + "\n" +
role3 + "\t" + actor3.toUpperCase() + "\n" +
role4 + "\t" + actor4.toUpperCase());
}
} -
Nyle
csendes tag
Értem, de nem teljesen jó (biztos béna vagyok még)
String change = actor1.toUpperCase();
String change = actor2.toUpperCase();Az első még jó, de a másodiknál már nem fogadja el
change is already defined in main(java.lang.String[])
String change = actor2.toUpperCase();change után definiálni kell, a változtatandót ?
vagy teljesen rosszul értelmeztem ? -
D4nte
csendes tag
A change* változókba nem szükséges külön eltárolnod a nagybetűsített dolgokat, annyi, hogy a printedben hívod meg ugyan új a függvényt az eredetiekre, amennyiben a kiíratáson kívül másra nem akarod használni ezeket a nagybetűsített verziókat. Ettől még az eredeti stringek (az előző hozzászólásokból is kiderülten) változatlanok maradnak.
-
Nyle
csendes tag
Na szóval akkor újra!
public class Credits {
public static void main(String[] args) {
// a film adatainak beállítása
String title = "The Piano";
int year = 1993;
String director = "Jane Campion";
String role1 = "Ada";
String actor1 = "Holly Hunter";
String role2 = "Baines";
String actor2 = "Harvey Keitel";
String role3 = "Stewart";
String actor3 = "Sam Neill";
String role4 = "Flora";
String actor4 = "Anna Paquin";
// az adatok megjelenítése
System.out.println(title + " (" + year +")\n" +
"A " + director + " film.\n\n" +
role1 + "\t" + actor1 + "\n" +
role2 + "\t" + actor2 + "\n" +
role3 + "\t" + actor3 + "\n" +
role4 + "\t" + actor4 );
}
}Ez az eredeti kód.
Mikor futtatom akkor megjeleníti a szövegeket. (tudom, hogy tudjátokcsak magam miatt írom le)
Pl: Ada Holly Hunter
Baines Harvey Keitel
stb
És az volna a kérdésem, hogyan lehet a legkönnyebben úgy megváltoztatni a kódot, hogy csak az actorok és a director legyen Teljesen nagybetűvel a többi marad az eredetiben.String change = director.toUpperCase();
Ugye ez megváltoztatja a directorhoz rendelt Jane Campion nevet JANE CAMPION-ra
+ "\n" + change
Ez pedig megjeleníti.Na már most azóta én már átírtam a kódot, így fest most.
public class Credits {
public static void main(String[] args) {
// a film adatainak beállítása
String title = "The Piano";
int year = 1993;
String director = "Jane Campion";
String role1 = "Ada";
String actor1 = "Holly Hunter";
String role2 = "Baines";
String actor2 = "Harvey Keitel";
String role3 = "Stewart";
String actor3 = "Sam Neill";
String role4 = "Flora";
String actor4 = "Anna Paquin";
// az adatok egy részének, nagy betűvel való megjelenítése
String changedirector = director.toUpperCase();
String changeactor1 = actor1.toUpperCase();
String changeactor2 = actor2.toUpperCase();
String changeactor3 = actor3.toUpperCase();
String changeactor4 = actor4.toUpperCase();
// az adatok megjelenítése
System.out.println(title + " (" + year +")\n" +
"A " + changedirector + " film.\n\n" +
role1 + "\t" + changeactor1 + "\n" +
role2 + "\t" + changeactor2 + "\n" +
role3 + "\t" + changeactor3 + "\n" +
role4 + "\t" + changeactor4);
}
}A kérdés még mindig az, hogy van-e rövidebb megoldás erre ? vagy ez így jó ?
Elnézést, hogy ilyen hosszúra sikeredet.Köszönöm a segítségetek.
-
skoda12
aktív tag
válasz
Superhun #3139 üzenetére
"
"a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan"Valójában csak a mérete, a karaktereket módosíthatjuk benne a charAt metódussal, O(1) időben."
A String immutable, nem modosithatod, a charAt pedig pont visszaad egy karaktert es nem modositja azt.
"Valójában úgy áll a dolog, hogy a kódban definiált Stringek (String str = "abc") az úgynevezett literal pool-ban lévő elemekre fognak hivatkozni, ami a heap-től független, így a GC-től is."
Java 7-tol az interned stringek is atkerultek a permanent generationbol a young es old generationbe tehat nem igaz, hogy a heaptol fuggetlenek.
-
Lacces
őstag
válasz
Superhun #3139 üzenetére
Módosítani lehet, de hozzáadni új karaktert is? Úgy hogy ugyanaz az objektum.
Na igen, az első variáció, azt tudtam... az a literal pool. Erről olvastam is.
A második jah, abban igazad van, azt most megnéztem anno kódot, és rosszul következtettem rá, mert ott nekem str1.equals(str2) van..., Igen, és az objektum a kupac memória kerül, ahol a gc garázdálkodik és csak a lokális változók és a tagfüggvények kerülnek a verembe.
Igaz, félre beszéltem, köszönöm a helyesbítést
-
"a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan"
Valójában csak a mérete, a karaktereket módosíthatjuk benne a charAt metódussal, O(1) időben.
"a Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket"
Ezt nem gondolhatod komolyan. Elég sok alkalmazás kapna így out of memory-t
. Valójában úgy áll a dolog, hogy a kódban definiált Stringek (String str = "abc") az úgynevezett literal pool-ban lévő elemekre fognak hivatkozni, ami a heap-től független, így a GC-től is. A futás időben keletkezett String objektumok viszont mindig a heap-re kerülnek, amiket pedig a GC eltakarít, ha már nincs rájuk hivatkozás.
Példa:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);Eredmény: true
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);Eredmény: false
-
Lacces
őstag
Nekem sem tiszta, mit akarsz pontosan, de lehet én vagyok lüke hozzá.
Ez lehet az amire gondoltál szerintem:
String result = title + " (" + year +")\n" +
"A " + director + " film.\n\n" +
(role1 + "\t" + actor1 + "\n" +
role2 + "\t" + actor2 + "\n" +
role3 + "\t" + actor3 + "\n" +
role4 + "\t" + actor4 + "\n" +
change).toUpperCase();
System.out.println(result);
role1-től a change-ig minden nagybetűs a többit meg kicsiben hagyja a result Stringben.
A toUpperCase() után oda lehet szúrni a toStrin()-et is de ez nem kötelező, anélkül is nagybetűsre alakítja.Karma hsz-e is hasznos. De szerintem még nem tartasz ott, hogy tud, ő miért javasolta a StringBuildert
Bár az is, igaz, hogy inkább forciklusban használják a StringBuildert.
Ennek oka röviden, hogy a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan. Ha úgy mond konketenálsz egy String-et akkor új String jön létre.
role1 + "t" -> akkor ez egy új String objektum ami a memóriában van, és nem a régi módoítottad, ami szintén a memóriában van, és marad a program végéig! StringBuilder esetében pedig a régit tudod módosítani, és így csak String objektum van a memóriában. A JVM nem módosítja sosem a Stringeket, hanem újat hozz létre mindig! És ezzel eszi a memóriát. És ez azért is baj, mert a Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket.
Bár van egy előnye ennek, az ha mégegyszer egy ugyanolyan String objektum jön létre (ugyanaz az értéke), akkor a JVM nem hozz létre új Strng-et hanem egész egyszerűen már egy meglévőre hivatkozik.
De ha tévedet, jönnek a többiek és nagy örömmel kijavítanak. -
Karma
félisten
Hogy mit szeretnél? Fontos lépés a programozásban, hogy pontosan tudod mit és miért akarsz csinálni. A zajt kordában kell tartani.
Jelen példa esetén nekem nem jött át a szándék. Kifejthetnéd.
Mindenesetre ha egy nagy stringben akarsz mindent összegyűjteni, akkor nincs más dolgod, mint összefűzöd őket. A rossz megoldás a + operátor, a kicsit jobb a StringBuffer/StringBuildet használata, nekem személy szerint az Apache Commons Lang nevű library StringUtils.join() metódusa tetszik a legjobban - nem vagyok a kerék újrafeltalálásának híve.Persze a gyakorlás az más tészta. De akkor is legyen legalább minimális értelme.
-
Nyle
csendes tag
Újabb kérdés! (elnézést a sok kérdés miatt)
Adott az alábbi kód
public class Credits {
public static void main(String[] args) {
// a film adatainak beállítása
String title = "The Piano";
int year = 1993;
String director = "Jane Campion";
String role1 = "Ada";
String actor1 = "Holly Hunter";
String role2 = "Baines";
String actor2 = "Harvey Keitel";
String role3 = "Stewart";
String actor3 = "Sam Neill";
String role4 = "Flora";
String actor4 = "Anna Paquin";
String change = director.toUpperCase();
// az adatok megjelenítése
System.out.println(title + " (" + year +")\n" +
"A " + director + " film.\n\n" +
role1 + "\t" + actor1 + "\n" +
role2 + "\t" + actor2 + "\n" +
role3 + "\t" + actor3 + "\n" +
role4 + "\t" + actor4 + "\n" +
change);
}
}A kiemelt részek felelősek a director nagybetűvel való megjelenítésért, az kérdésem is ehhez kapcsolódó lenne. Lehetséges úgy átírni a kódot hogy az actorokat és a rolekat egy Stringben alakítsa át nagybetűsre ?
a megjelenítés már nem lényeges.Előre is köszönöm.
update: Nem lehet kódban kiemelni vagy csak nekem nem akarja az igazságot.
String change = director.toUpperCase();
ez lenne a lényeges rész. -
Karma
félisten
Ez a számítás teljesen jó ebben a formában szerintem.
A Math osztályban találsz tetszőleges hatványra emelő metódust, de a négyzet pont olyan, hogy ezért felesleges ezt bevonni.
---
Az alaphelyzetre visszatérve nem vagyok annyira meggyőződve arról, hogy jól választottál nyelvet. Amit most írsz stílus, ami egyszer strukturált programozásig fejlődhet, szerintem nem igényli a Javát; viszont rossz Java programozási gyakorlatot ültethet el a fejedben, amit nehéz lesz kiirtani.
-
Nyle
csendes tag
válasz
Superhun #3122 üzenetére
Köszi!
Valahogy sejtettem, hogy csak így lehet.
weight = 0.45 * 3; ez a rész elég is volt
A tizedes vesszőt csak megszokásból írtam így, de már kezdem megszokni a dolgokat.Viszont lenne egy újabb kérdésem
Elöljáróban még annyit leszögeznék, hogy soha nem programoztam és nem is tanultam programozást.
De nagyon érdekel és tetszik is. Ezután a java mellett döntöttem.Szóval adott az alább kód
public class Matek {
public static void main(String[] args) {
int x = 5;
int y = 6;
System.out.println("Matek 5 to the second plus 6 to the second equal");
int number = (x * x) + (y * y);
System.out.println("Matek " + number);
}
}A feladat az lenne, hogy 2 szám négyzetét kiszámolja majd összeadja és azt megjeleníti.
Le is fut és jól is működik. Nem is hibával kapcsolatos a kérdésem, inkább azt szeretném tudni, hogy van e más megoldás 2 szám négyzetének kiszámolására ? keresgettem googleban, de nem találtam olyat ami nekem jó lenne. vagy csak még nagyon kezdő vagyok
Lehet nektek csúnya a fenti kód, de tőlem most csak ennyire futotta!
Várom a véleményeket.Előre is köszönöm.
-
Két alapvető dolgot tegyünk tisztába:
1. A tizedesvesszőt ponttal jelölik szinte minden prognyelvben
2. Int típusú változnak nem adhatsz értékül lebegőpontos számot. Tehát vagy lebegőpontosként definiálod a weight változót,// lebegőpontos, a szám végén egy f betűvel jelöljük
float weight = 250.0f;
weight += 0.45f * 3;
// dupla pontosságú lebegőpontos
double weight = 250.0;
weight += 0.45 * 3;vagy castolod a jobboldalt egész számmá:
weight += (int)(0.45f * 3);
Az utóbbinál figyelni kell, mert pontosságot veszíthetsz.
Sok sikert a tanuláshoz!
-
Nyle
csendes tag
Sziasztok
Java programozást kezdtem tanulni könyvekből, mert érdekel nagyon, és tetszik is.
Kellene egy kis segítség.int weight = 250;
weight = weight + 0,45 * 3;Nem fogadja el a 0,45-öt (nem fordul le) és semmilyen nem egész számot. Megoldható valahogy ? vagy floatba lehet csak ?
Előre is köszönöm.
-
MrSealRD
veterán
válasz
bucsupeti #3116 üzenetére
A SessionFactory egy nagyon költséges objektum. Alkalmazásonként egyet "szoktak" használni...
Hogy hová "teszed" az tervezési kérdés. A láthatóság és más egyéb témákról pedig még olvass utána mert ez így még kevés...
Adok egy tippet: Nézd meg a Spring Framework hogyan kezeli ezt... -
bucsupeti
senior tag
NetBeans Platformos kérdésem lenne.
Szerintetek egy swing vastagkliens alkalmazásba hol célszerű a Hibernate konfigurációt intézni?
Hol inicializálódjon a SessionFactory?Mivel ennek az egész program alatt működnie kell én arra gondoltam hogy a main()-ban valahol. Viszont ha ott indul és a main egyik lokális változójába teszem a SessionFactory-t, akkor azt máshol nem érem el.
Ezért arra gondoltam hogy a main()-t tartalmazó osztály adattagja kell hoyg legyen a SessinFactory, így a teljes programban érvényes lesz és használható, lehet belőle Session-t kérni stb...Jó ez a gondolat? A NetBeans tutorialban egy külön metódus van definiálva a query futtatására, majd abból van megjelenítve (egy jTable komponensbe). Nem is ez a lényeg.
Nekem az a fura hogy ez a tutorial-os példa minden egyes gombnyomásra futtat egy lekérdezést. Ehhez minden egyes alkalommal felépíti a SessionFactory-t (azaz beolvastatja a hibernate.cfg.xml-t és a mappingokat stb). Ez számomra logikátlannak tűnik és fölöslegesnek tűnik.
A könyvek azt írják hogy elég egyetlen SessionFactory egy adatbáziskapcsolathoz és ezen indítsuk a session-öket és a tranzakciókat. Ezzel ez tök ellentétes.
Erősítsetek meg, vagy magyarázzátok meg hogy miért jó úgy ahogy a tutorialban van. Ti hogy csinálnátok?Köszi a válaszokat!
-
tknof1871
őstag
válasz
Superhun #3111 üzenetére
Üdv! Letöröltem mindegyiket. Java 7 Update 9, Java(TM) 6 Update 32, JavaFX 2.11. Elmentem erre az oldalra http://www.java.com/en/download/chrome.jsp?locale=en. Letöltöttem ezt a fájlt: chromeinstall-7u9.exe. Gépet újraindítottam és megpróbáltam telepíteni, de akkor ezt a hibaüzenetet kaptam:
Error - Java Installer
Downloaded File C:\Documents and Settings\ITT AZ ADMIN JOGÚ FIÓKOM NEVE\Application Data\Sun\Java\jre1.7.0_09\java_sp.dll is corrupt.
[OK]Az uninstalálásokat és a telepítést is az admin jogú fiókommal csináltam, amikor a nem admin jogú fiókkal nem voltam belépve. Mit kell most tenni?
-
bucsupeti
senior tag
Segítségeteket kérném, mert egyszerűen nem bukkanok rá a megoldásra.
NetBeans 7.2-t használok.Egyszerű JDBC adatbáziskezelő demó programocskát csináltam, amivel demonstráltam a Sakila MySQL demó adatbázis egy tábláján végzett (CRUD) műveleteket. A program konzolra ír, nincs benne semmi extra, teszi a dolgát, működik rendesen.
Csináltam egy másik példaprogramocskát (szintén konzolos), ami ugyan ezen műveleteket végezné el Hibernate-et alkalmazva. Ez is működik rendben.
A problémám az hogy a Hibernate demó program az indulásakor logol a konzolra. Hallottam már a log4j-ről, de én ilyet nem kapcsoltam be sehol egyik programban sem. Ráadásul INFO szinten küldi a logot, azaz szinte mindent kiír. Ha JAR-t csinálok és az futtatom parancssorba ott is írja a logot a konzolra.
Hogyan lehet ezt kikapcsolni? Miért kapcsolódott ez be a Hibernate-es programban?
Itt a teljes log amit kiír:
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.1.GA
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
nov. 10, 2012 10:01:50 DE org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : hibernatedemo/Actor.hbm.xml
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: hibernatedemo.Actor -> actor
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.AnnotationConfiguration secondPassCompile
INFO: Hibernate Validator not found: ignoring
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/sakila
nov. 10, 2012 10:01:51 DE org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=root}
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: MySQL, version: 5.1.36-community-log
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.18 ( Revision: tonci.grgin@oracle.com-20110930151701-jfj14ddfq48ifkfq )
nov. 10, 2012 10:01:51 DE org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.MySQLDialect
nov. 10, 2012 10:01:51 DE org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Using default transaction strategy (direct JDBC transactions)
nov. 10, 2012 10:01:51 DE org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
nov. 10, 2012 10:01:51 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Maximum outer join fetch depth: 2
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL inserts for batching: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
nov. 10, 2012 10:01:52 DE org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory createCacheProvider
INFO: Cache provider: org.hibernate.cache.NoCacheProvider
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
nov. 10, 2012 10:01:52 DE org.hibernate.cfg.SettingsFactory buildSettings
INFO: Named query checking : enabled
nov. 10, 2012 10:01:52 DE org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
nov. 10, 2012 10:01:52 DE org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured -
tknof1871
őstag
Üdv! A Jdownloader-t nem tudom elindítani. Azt írja:
Launch4J
The registry refers to a nonexistent Java Runtime Enviroment installation or the runtimne is corrupted
A rendszer nem találja a megadott elérési utatA Programok telepítése és törlése ezeket a Java-kat sorolja:
Java 7 Update 9
Java(TM) 6 Update 32
JavaFX 2.11Néha feljön a tálcán egy kis ikon, hogy frissíthetem a Java-t, de sosem sikerül végig csinálni. Most nem tudom, mi a hibaüzenet abban az esetben. Mit csináljak?
-
bucsupeti
senior tag
A példa erőltetett. Persze nem így célszerű ezt megoldani.
Igazából azt szeretném, hogy SE környezetben valahogy modellezni, példaalkalmazást készíteni egy háromrétegű architektúra demonstrálására.
[ui] + [üzleti logika] + [adatbázis]Az ui lenne az a rész amit nem fordítok újra. Az üzleti logikában történik változás és azt akarom demonstrálni hogy ennek a modul változtatása független a többi rétegtől. Az adatbázis meg az ami.
Nyilván ez normális felhasználás esetén JavaBean, servlet meg minden EE csoda segítségével gyönyörűen megvalósítható, de éppen ezeket szeretném "hanyagolni" és SE környezetben, lokálisan valahogy demonstrálni.
-
Karma
félisten
válasz
bucsupeti #3104 üzenetére
Ha gányolni akarsz, semmi akadálya annak, hogy lefordítsd az egy szál .class fájtt. és kicseréld a JAR-on belül (hiszen az csak egy átnevezett zip)... Feltéve persze, hogy az interfész egyáltalán nem változott.
De ha ilyen jellegű változásra fel akarsz készülni, miért nem konfigurációként tárolod az ÁFA kulcsot, nem pedig a kódba égetve?
-
bucsupeti
senior tag
Nem biztos hogy teljesen jól fogalmaztam meg a dolgokat.
Szóval azt szeretném, hogy van egy "csomagom", ami tartalmaz egy osztálydefiníciót (csomag1.java). Ezután készítek egy java programot (teszt.java), ami használja a csomagban definiált osztályt (import csomag1).
Ezután változtatok a csomag1.java fájlban, újrafordítom a csomag1-et (de a teszt.java-t nem!!!!) és az eredeti teszt.class újrafordítás nélkül a csomag1 változtatásait ismeri.Lehet hogy egyszerűbb konkért példán keresztül:
Szóval Aru.java:
class Aru {
private String aruNev;
private int nettoAr;
[B]private static int afaKulcs=27;[/B]
public Aru(){
}
public Aru(String aruNev, int nettoAr, int afaKulcs){
this.aruNev=aruNev;
this.nettoAr=nettoAr;
this.afaKulcs=afaKulcs;
}
public String getAruNev(){
return aruNev;
}
public void setAruNev(String aruNev){
this.aruNev=aruNev;
}
public int getNettoAr(){
return nettoAr;
}
public void setNettoAr(int nettoAr){
this.nettoAr=nettoAr;
}
public float getAfaErtek(){
return nettoAr*afaKulcs/100;
}
}Ezután megírom a király számlázó programot ami használja az Aru osztályt (Szamlaz.java) és lefordítom (Szamlaz.class). Közben megváltozik az üzleti logika és ezért a statikus adattagot átírom az új áfa értékre. Lefordítom az Aru.java-t és ezt a számlázó program újrafordítás nélkül tudja alkalmazni.
Az azért már kiderült hogy erre nem jó a csomag módszer, mert teljes újrafordítás kell.
Van erre valami módszer Java SE-ben? Vagy ehhez már valamiféle enterprise megoldás kell? -
Karma
félisten
válasz
bucsupeti #3102 üzenetére
Kikapcsolódás (mármint sok órát bele lehet ölni), XML fetisisztáknak örömforrás, de mindenek felett egy Java build rendszer.
Amiben a legkisebb projekteket is tudja segíteni: 1) sablonokból (ún. archetípus) többszázféle projektet létre lehet hozni egyszerűen; 2) ha bármiféle libraryre szükséged van(*), csak megadod függőségként, a Maven levadássza, felhasználja a fordításnál, sőt akár egybe is csomagolja neked a programoddal; 3) ad egy egységes, mindenre kiterjedő keretet a fordításnak (előfeldolgozás -> fordítás -> tesztelés -> csomagolás -> archiválás), ami szabadon konfigurálható, és 4) tovább bővíthető szinte bármilyen célra(**).
Hatalmas változást hozott a Java fejlesztői munkáimban, hogy circa egy éve beleástam magam. Mindenképp ajánlom, hogy próbáld ki
És ha van valami konkrét kérdés, címezd ide, elég lelkes vagyok e kapcsán
Egyébként a fentebbiek hatalmas projekteknél hatványozottan jól jönnek. Nincs is jobb, mint kézzel másolgatni többszáz dependenciát, és többtíz Ant projektet sokezer soros kézi szkripttel fordítani...
(*) A nyilvánosan elérhető csomagok között legegyszerűbben a search.maven.org-on tudsz keresni. Ez az ún. Maven Centralt indexeli - ami kvázi az egész Java világ.
(**) Rengeteg plugin elérhető el, legyen szó kódanalízisről, dokumentációgenerálásról, XML validálásról, LESS->CSS konverzióról, source controlról, tényleg bármiről. Sőt, még Antot is képes beágyazva futtatni, így még tovább bővülnek a lehetőségek.
-
bucsupeti
senior tag
Köszönöm az infókat!
@Karma: mi a Maven pontosan? Mire használható?
-
Karma
félisten
válasz
Superhun #3100 üzenetére
Ha külső, komolyabb librarykről van szó, vagy nagyobb projektekről, megérheti a Mavent is bevonni a játékba. Mindent és még annál is többet megcsinál.
Bár nem hiszek abban, hogy van egy kritikus minimális méret, ami alatt nem éri meg rendesen szervezett projektet gyártani
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- NFL és amerikai futball topik - Spoiler veszély!
- Vezetékes FEJhallgatók
- Autós topik látogatók beszélgetős, offolós topikja
- Max
- Kerékpárosok, bringások ide!
- Azonnali alaplapos kérdések órája
- Spórolós topik
- Elemlámpa, zseblámpa
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- További aktív témák...
- Azonnali készpénzes Microsoft XBOX Series S és Series X felvásárlás személyesen/csomagküldéssel
- Törött, Hibás iPhone felvásárlás!!
- Lenovo ThinkPad L16 Gen 1 - 16" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
- Csere-Beszámítás! Gamer PC Számítógép! R9 3900X / RX 6700XT / 32GB DDR4 / 1TB SSD
- Honor Pad X8a 64GB Wifi,1 év Garancia
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged