Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#9101) #74220800 válasza Szmeby (#9100) üzenetére


#74220800
törölt tag

@ disy68 és Szemby köszi!

Most működik, de azért nem minden kristálytiszta.

Meg egyszer pls itt mit is csinálunk?

public boolean equals(Object obj{
PolyLine other= (PolyLine) obj;
return points.equals(other.points);
}

főleg ezt nem értem: other.points

Objectet becastoljuk PolyLine-ra, majd azt visszacastoljuk Arreylistre, aztán az equals ekkor a beépített metódus a két arraylist miatt?

(#9102) Szmeby válasza #74220800 (#9101) üzenetére


Szmeby
tag

Nem egészen.

Van 2 PolyLine objektumod, amit a Bsp10-ben hozol létre polyLine és polyLine2 néven.
Fogod a polyLine nevűt, és ráhívsz az equals metódusára, paraméterként pedig átadod ugye a polyLine2-t.

A történések ezután az equals-on belül zajlanak tovább. A korábban polyLine-nak nevezett objektumot az equals-ban a this kulcsszóval érheted el (amit többnyire nem kötelező kiírni, névütközés esetén viszont kénytelen az ember... na mindegy), míg a polyLine2 most már obj néven érhető el. A csavar ott van, hogy az equals szignatúrája csak Object típusú paramétert enged meg, ezért az obj paramétert kénytelen vagy Object típussal definiálni, erről viszont a java már nem tudja, hogy az valójában egy PolyLine objektum, így a spéci metódusaira sem tud ráhívni, és a field-jeit sem látja.

Úgyhogy castolunk, megmondjuk őnagyságának, hogy ez bizony egy PolyLine:
PolyLine other = (PolyLine) obj;
Megjegyzem, most ez így működik, de ha megpróbálsz egy nem PolyLine objektumot betolni, szétszakad az egész, tehát érdemes az equals-ban előbb megbizonyosodni arról, hogy valóban PolyLine-e (getClass() metódus felhívásával, instanceof-fal).

Ezekután az other változóról már tudjauk, hogy PolyLine, elérjük minden metódusát és field-jét, például a hasában lévő points listát is. Egy Object esetén ezt nem tudod megtenni. És ezt a listát össze tudjuk hasonlítani a this objektumunk points listájával.
return this.points.equals(other.points);
Rövidebben:
return points.equals(other.points);

Tehát listát hasonlítunk listával, ezért működik.

Ez nem castolás, csak meghivatkozzuk az objektum egy field-jét.
Castolásnál a változónév elé zárójelben megadjuk azt a típust, amire castolni akarunk, és ezzel aztán azt kezdünk, amit akarunk. Az "other.points" nem tartalmaz semmilyen zárójelet meg típust, ez csak ráhív a points nevű mezőre az other objektumban.

A castolás elhiteti a jvm-mel, hogy az adott objektum valójában egy másik típusú objektum. Itt nem változtatunk a típuson, a this és az other továbbra is PolyLine típusú, és mindkettő hasában van 1-1 lista (points néven), amit felhasználunk az egyezőség megállapításához. A points.equals() tehát az ArrayList-en található equals metódus.

Ha a this-t és az other-t hasonlítanád itt össze egymással, az ugyanabba az equals metódusba hívna bele (rekurzió) újra és újra, amiben eleve vagy, és addig pörögne, amíg el nem fogy a stack, majd lehal az egész. Próbáld ki. :)

És kérdezz bátran.

[ Szerkesztve ]

(#9103) Z-Raw


Z-Raw
újonc

Sziasztok!

Egyik barátom ajánlotta a PROHARDVER fórumát, ő lelkesen olvas és kér tőletek tanácsot.

Jelenleg Német-Angol L1-esként dolgozom, alapszintű számítógépes ismeretekkel kerültem ide, őszintén szólva, eléggé megszerettem az IT Világát. Szeretnék többet tudni, és többet elérni ha lehetséges, ezért gondolkodtam fizetős képzéseken. Jelenleg februárban induló JAVA SE képzésre szeretnék jelentkezni. Utána egy EE-t is bevállalnék. Eddig még nem próbálkoztam programozással, de nagyon érdekel.

Szeretnék 4-5 hónapon belül feljebb lépni, szerintetek az elképzelés reális? Önképzés gyanánt megpróbálkoznék még mással is, milyen programokat,könyveket ajánlanátok egy kezdőnek?

Remélem jó helyre posztoltam :)

És várom válaszaitokat.

Nem vagy bölcs, csak bölcsész

(#9104) xuldar


xuldar
őstag

Sziasztok! Java programozót keresek alkalmi munkára. Részletek PM-ben.

Azért jó mazochistának lenni, mert ha rossz, akkor jó. De ha meg jó, akkor rossz, tehát jó.

(#9105) Aethelstone válasza Z-Raw (#9103) üzenetére


Aethelstone
addikt

Hááááááááát..........

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9106) Chesterfield


Chesterfield
senior tag

Van egy IO osztályom megnyitott Connection objektummal, amit konstruktorban kapott.
Az osztálynak van néhány PreparedStatement-je, amiket példányosításkor hoz létre.
És van néhány metódusa, amik elvégzik az adatbázis műveleteket.

Ehhez az osztályhoz kellene Junit tesztet készítenem

Tudnátok pár tippet adni, a hogyanhoz?

köszönöm

(#9107) Aethelstone válasza Chesterfield (#9106) üzenetére


Aethelstone
addikt

Mi a kérdés? Hogy tudsz JUnit tesztet írni vagy az, hogy mihez kellene??

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9108) Chesterfield válasza Aethelstone (#9107) üzenetére


Chesterfield
senior tag

Junit tesztet már írtam, de csak egyszerűbb osztályhoz, ahol szimplán a metódusok visszatérési értékét ellenőriztem.

Azt nem tudom, hogy hogy tesztelek egy ilyen osztályt.
Íratnom kellene vele az adatbázisba, majd onnan visszaolvasni, és azt ellenőrizni?

[ Szerkesztve ]

(#9109) Chesterfield


Chesterfield
senior tag

Valamint lenne még egy kérdésem.
Vidéken(Debrecen) junior pozícióban tudnátok mondani egy körülbelüli fizetési sávot?

(#9110) floatr válasza Chesterfield (#9108) üzenetére


floatr
veterán

Igazából ezt a részt elég nehezen lehetne már unit tesztnek becézni. Én általában egy ilyen teszthez -- nevezzük bárminek is, akár integrációsnak pl -- fel szoktam húzni a teljes környezetet, ami szükséges a futtatásához. Egy DB query futtatáshoz pl kell a teljes perzisztencia-réteg élő kapcsolattal.

Mivel Springet használok leggyakrabban, ott elég annyi, hogy 2 annotációt hozzácsapsz a teszt osztályodhoz, pl
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/testContext.xml"})
public class MyTest ...

Ha viszont egyéb módon rakod össze az alkalmazást, akkor a JUnit egy másik annotációval fel engedi építeni a szükséges környezetet:
public class MyTest {
...
@BeforeClass
public static void start() {
// itt hozod létre a db kapcsolatot, stb...
}
...
}

(#9111) Cathfaern válasza Chesterfield (#9108) üzenetére


Cathfaern
nagyúr

Ha adatbázisba írsz, akkor az már nem unit teszt, mert egy csomó függősége lesz. A kulcszó: mock

(#9112) kispx válasza Chesterfield (#9109) üzenetére


kispx
addikt

Attól függ, hogy melyik cég. Általában br. 200k lesz tapasztaltat nélkül (szakmai gyakorlattal). Esetleg az e betűs cégnél, ha jól sikerülnek az interjúk ugyanez nettóban.

(#9113) #68216320


#68216320
törölt tag

JAVA nyelvel ismerkedem. PHP-s előképzettségem már van.
Mielőbb szeretnék majd JAVA SE-vel foglalkozni csapatban, Junior fejlesztőként. Úgy vélem így lehet a legtöbbet a leggyorsabban ellesni :)

Bp-en ajánlanátok nem elszállt áron oktatást, ahol tényleg gyorsan lehet az alapokat elsajátítani?
Illetve Bp-en milyen fizetési sávok vannak ezen a területen?

(#9114) fordfairlane válasza Chesterfield (#9106) üzenetére


fordfairlane
veterán

(#9115) floatr válasza Cathfaern (#9111) üzenetére


floatr
veterán

Mock használatával ebben az esetben nem tudom, hogy igazán mit tesztelsz. Leginkább a mock konfigurálási képességeidet, bár az sem megvetendő.

Én értem, hogy ha test driven és CI/CD alapú az egész projekt, akkor nagy a késztetés a teljes kód lefedésére ordas mennyiségű unit tesztekkel, de ezen a ponton több hibát lehet véteni a kamuadatok összegereblyézésével, mint anélkül.

(#9116) Cathfaern válasza floatr (#9115) üzenetére


Cathfaern
nagyúr

#9109 alapján nekem ez valami teszt-, vagy gyakorlófeladatnak tűnt. Ha éles projekt, akkor igazad van :)

(#9117) Chesterfield


Chesterfield
senior tag

köszönöm a válaszokat.

Igen, ez egy gyakorlófeladat lenne, a leírásban szerepel, hogy írjam meg a tesztosztályokat is.

(#9118) Lortech válasza Chesterfield (#9117) üzenetére


Lortech
addikt

Ahogy elhangzott, előbb eldöntendő, hogy unit tesztet vagy integrációs tesztet akarsz írni.
Mivel nem írtál konkrét kódot, nem tudható, hogy van-e olyan metódus az osztályában, ami tartalmaz olyan logikát, amit érdemes unit teszttel lefedni. Ha van, a 9114 jó irány. Ha integrációs tesztet szeretnél írni, az a 9110-es irány.
Ha csak gyakorolni szeretnél, érdemes mindkettőt kipróbálni.

Thank you to god for making me an atheist

(#9119) fordfairlane válasza Chesterfield (#9117) üzenetére


fordfairlane
veterán

Ha mock framework nem jöhet számításba, akkor maradnak a kézzel létrehozott Stubok. Saját Connection, ami visszaad saját Statement objektumot, ami visszaad saját, tesztelhető Resultsetet.

x gon' give it to ya

(#9120) csabi0911 válasza axioma (#9050) üzenetére


csabi0911
csendes újonc

Ezt kicsit egyszerűbben le tudnád írni? Esetleg forráskódot, ahogyan te megoldottad?

(#9121) #74220800


#74220800
törölt tag

Sziasztok!

Egy rekurzív képlet kapcsán kérlek segítsetek.

Röviden: Van egy 2D-s tömbből álló 5x5 mátrixom véletlen értékekkel. Minden mezőből indulva meg kell vizsgálni, hogy kisebb értékekkel rendelkező szomszédos elemek menten (föl, le, balra, le) el lehet-e jutni a mátrix széléig. Fontos, hogy rekurzív képlettel kell megoldani Egy irányba meg tudtam oldani. Most a 9. és 11. valamint 13. és a 16.sorok összeakadnak.

Itt a drágám:

public class water{

public static boolean flows(int row, int column, int arr [][]){

int x = arr[row][column];

if (row ==arr.length -1 || row == 0 || column == arr[row].length -1 || column == 0)
return true;
else if (flows(row-1,column, arr) && arr[row-1][column] < x)
return true;
else if (flows(row+1,column, arr) && arr[row+1][column] < x)
return true;
else if (flows(row,column-1, arr) && arr[row][column-1] < x)
return true;
else
return (flows(row,column+1, arr) && arr[row][column+1] < x);
}

public static void main(String[] args){

int arr[][] = new int [5][5];

for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.print( (arr[i][j]= (int) (Math.random()*90)+10) + " ");
}
System.out.println();
}

System.out.println();

for(int i = 0; i <arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
if (flows(i,j, arr))
System.out.print("-");
else
System.out.print("W");
}
System.out.println();
}


}

}

(#9122) Szmeby válasza Z-Raw (#9103) üzenetére


Szmeby
tag

Nem mintha le akarnék beszélni bárkit is a képzésekről. Sőt, aki nulláról kezdi a jávát (pláne a programozást), neki még érdemes is megtanulni a terminológiát, és az alapvető módszereket, remélhetőleg a képzésen ezt helyesen adják át. Plusz a képzésen szintén ajánlhatnak neki rengeteg könyvet.
De. Akinek már van rendes tapasztalata, én nem igazán vesztegetném a helyében az időt és a pénzt képzésre, ha egy alacsonyabb fizetési igénnyel valamely céghez bekerülve juniorként többet tanul az ember a kollégáktól (jót és rosszat egyaránt), és pénzt is kap érte. Persze azért teljesíteni is kell.

Ha szereted csinálni, és fejlődni akarsz, az nagyon jó. Mindenki így kezdi. Ha megvan mellé a kritikus gondolkodásmód is, akkor csak kitartást tudok kívánni. Könyveket már sokat ajánlottak itt a fórumban, keress rá... ha mindet le akarod zavarni, 4-5 hónapnál több időre lesz szükséged. :)
Csak olvasással nem fogsz sokat tanulni, nem rögzül, csinálni is kell mellette.

Hogy akarod-e folytatni, majd a képzés után döntsd el. Miután megvannak az alapok, otthon is folytathatod a saját magad képzését, az ismeretek elmélyítésével, próbálgatással, és annak kiderítésével, hogy mi miért nem működik, ahogy azt elképzelted. Ez arra is jó, hogy rájöjj, a melóban mit csinálnak rosszul.

Ja és tartsd észben, hogy attól, hogy 4-5 hónap SE után belevágsz az EE-be, még nem jelenti azt, hogy az SE-t készségszinten tudnád használni. Ugyanúgy tanulni kell tovább azt is. Mondjuk, ha bármikor sikeresen meg tudnál írni egy OCA/OCP tesztet (neten találsz pár ingyenes mock test-et), akkor lehet azt mondani, hogy az SE kipipálva. De ehhez szerintem fél évnél jóval többet kell szívni a jávával.

(#9123) Szmeby válasza #74220800 (#9121) üzenetére


Szmeby
tag

Hali,

mondjuk én első körben nem egyből egy random mátrixszal indítanék, hanem egy kicsit ellenőrzöttebb körülmények között tesztelném a cuccot. Pl. egy ilyennel:

1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

És akkor debug módban szépen lépkedve kiderítheted, hogy az a baj, hogy először mindig felfelé próbálkozol kijutni, majd ha nem megy, akkor lefelé. Csakhogy a próbálkozásod előtt nem csekkolod, hogy egyáltalán érdemes-e (<x). Mindenképp megpróbálod, így visszajutunk egy korábbi állapotba, ahonnan nem sikerült felfelé kijutni, így azt megpróbálni sem lenne érdemes, de ő csakazértis újra felfelé próbál. Nem tud, ezért megint lefelé indul el. A lefele ágban először újra felfelé indulna, és... gondolom érted, hogy ez a végtelenségig tart, ide-oda pingpongozik a két sor egymással.

Egy ilyen térképpel például szépen működik a progi, mert mindig csak felfelé kell másznia:

1 1 1 1 1
1 2 2 2 1
1 3 3 3 1
1 4 4 4 1
1 5 5 5 1

Rekurzív hívásnál nagyon fontos a sorrend, amint tudod, terminálni kell a folyamatot. Érdemes először ellenőrizni, hogy a szomszédos szám valóban jó irány-e, és csak akkor ráhívni rekurzívan, ha tényleg van esély a kijutásra.

----
Apró adalék, hogy egy kis emlékezet bevezetésével, drasztikusan gyorsítható a program. Ugyanis ha számon tartod (pl. egy kimeneti mátrixban), hogy adott cellából sikerült-e korábban kijutni, akkor nem kell újra és újra végigjátszani a teljes útvonal bejárást.

[ Szerkesztve ]

(#9124) #74220800 válasza Szmeby (#9123) üzenetére


#74220800
törölt tag

Thx mint mindig.

Megcseréltem az If-eknél a sorrendet és most működik....

if (row == arr.length -1 || row == 0 || column == arr[row].length -1 || column == 0)
return true;
else if (arr[row-1][column] < x && flows(row-1,column, arr))
return true;
else if (arr[row+1][column] < x && flows(row+1,column, arr))
return true;
else if (arr[row][column-1] < x && flows(row,column-1, arr))
return true;
else
return (arr[row][column+1] < x && flows(row,column+1, arr));

Deeee, ezt megint nem teljesen értem. Ok gondolom ha az első értek hamis, akkor eleve be sem kéri a 2. elemet. De miért nem megy úgy, ha előszór a rekurzív képletet hívom meg, ha hamis, akkor lep tovább a következö if-re?

(#9125) Taoharcos


Taoharcos
aktív tag

Sziasztok!

Mostanában próbálok átszokni Netbeansről Ideára. Netbeansben volt egy menüpont ahol tudtam hozzá tudtam adni depedenciákat. Ideában nem találom. Hogyan lehet?

(#9126) F1rstK1nq válasza Taoharcos (#9125) üzenetére


F1rstK1nq
aktív tag

Lehet én vagyok a maradi, de nem egyszerűbb/hatékonyabb így? mvnrepository, majd megkeresed és bemásolod a megfelelő dependency-t a pom-odba?

:B

[ Szerkesztve ]

Adrenaline is natures way of telling you 'don't fuck up.'

(#9127) disy68 válasza Taoharcos (#9125) üzenetére


disy68
aktív tag

Ahogy (#9126) F1rstK1nq is írja, dependency-t ne az ide-re bízd, hanem maven/gradle.

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9128) Szmeby válasza #74220800 (#9124) üzenetére


Szmeby
tag

Szuper.
Jól gondolod, az && meg a || shortcut operátornak is hívja magát, ha a feltétel eleje önmagában is meghatározza a feltétel kimenetelét a többi része már fel sem hívódik.

"De miért nem megy úgy, ha előszór a rekurzív képletet hívom meg ..."

Azért mert a rekurzív hívásnak le kell futnia ahhoz, hogy a feltételben ki lehessen értékelni. De nem fut le. Belemegy a metódusba újra új paraméterekkel, majd azon belül is újra megint új paraméterekkel, és így tovább. A végtelen ciklus miatt csak befelé megy, sose jön ki onnan. Valaminek terminálnia kell, csak akkor jut vissza, akkor tudja azt mondani, hogy true vagy false, az if-ben akkor ki tud értékelődni, és lefutna a programod.

Nézd át újra a rekurzióról tanultakat. Vagy tényleg tegyél bele egy breakpointot, és - ha Eclipse-et használsz - nyomogasd az F5-öt a flow hívásnál. Ezzel belelép... megnézheted, miben változtak a paraméterek és hogy a hívás meddig jut el a metódusban, mielőtt újra ráhívna saját magára, F5. Nézd közben a stack-et is, minden egyes rekurzív hívásnál egy új sorral bővül.
Ha már érted, vedd ki a breakpointot és F8-cal engedd el, hadd teljesítse be a végzetét. :)

(#9129) vadasz70


vadasz70
aktív tag

Sziasztok! Olyan problémám lenne hogy van egy játék és nem működik, a java ezt írja ki application blocked by java secutity de sajnos hiába írtam a java consolba hogy ne blokkolja csak nem működik. tud valaki segíteni köszönöm

(#9130) disy68 válasza vadasz70 (#9129) üzenetére


disy68
aktív tag

Szerintem egy kicsit bővebben írd le, milyen játék, hol fut (böngésző/applet vagy asztali alkalmazás)? Mit írtál és milyen java console-ba (böngészőnél javascript console elérhető ugyebár)?

Amúgy a gondolatolvasó vénám azt mondatja, hogy Vezérlőpult (nézetnek kis ikonok) -> Java (vagy <java telepítési hely>/javacpl.exe) elindít ott security fül, lentebb állítod a szintet és ha valóban böngészős valamiről van szó, akkor hozzáadod a kivételekhez.

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9131) vadasz70 válasza disy68 (#9130) üzenetére


vadasz70
aktív tag

Erről az oldalról lenne szó [link] Online játék főleg yatzy érdekel. De sajnos azt már próbáltam hogy a vezérlőpult,java de a kivételekhez hiába adom hozzá ugyanazt dobja fel hiba üzenetként.

(#9132) disy68 válasza vadasz70 (#9131) üzenetére


disy68
aktív tag

Itt a leírás az engedélyezéshez. A lényeges az oldalon, hogy azt az url-t kell felvenned, ahol az applet megtalálható. Ez nem feltétlen ugyanaz, mint amit látsz a böngésző címsorában. A yatzy játék appletje a http://game03.playforia.net címről tölt be, ezt próbáld meg felvenni. De ez off szerintem itt, ez inkább üzemeltetéssel kapcsolatos problem.

És zárójelben még annyit, hogy szerintem keress inkább olyan oldalt, ahol nem applet-es játékok vannak, mert előbb utóbb egyik böngésző sem fogja az appleteket támogatni ;)

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9133) fordfairlane válasza vadasz70 (#9129) üzenetére


fordfairlane
veterán

Ennyit találtam: [link]

x gon' give it to ya

(#9134) togvau


togvau
senior tag

Egy java class fájlban írnék át egy konstans sztringet másra, de amikor indítani próbálom, ezt kapom:

Exception in thread "main" java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file Installer

A eredeti string csak ascii karaktereket tartalmaz, és az új is és mindössze egy ? és egy = az extra karakter ami a régiben nem volt..
berakom egy utf8 konverterbe, de ugyan az jön ki hexára pontosan, mert alapon is utf-8 (ascii). Akkor mi baja?
XVI32-fel replaceltem.

[ Szerkesztve ]

hitler, sztálin, micro usb

(#9135) mobal válasza togvau (#9134) üzenetére


mobal
MODERÁTOR

Próbáltad, hogy visszafejted majd kicseréled az új class fájlal?

mobal,

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#9136) Aethelstone válasza togvau (#9134) üzenetére


Aethelstone
addikt

Az nem lenne járható, hogy a class fájlt beolvasod classloaderrel, elvégzed a szükésges módosítást, majd visszaírod?

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9137) #68216320


#68216320
törölt tag

Help! :)

Van egy mintaprogramom, ami konzolból vár a felhasználótól karaktereket és ír ki szöveget.
OSX-en szépen fut az UTF-8-al, de Win alatt helytelenül jeleníti meg az ékezeteket, mivel az UTF8 2Byte-ot kiírja.
Ha chcp 65001-vel átváltom Win alatt a command line kódolását, akkor a kijelzés jó lesz, de bevitelnél meg sem jelennek az ékezetes karakterek.

Hogyan lehetne ezt rendesen használni?

(#9138) Aethelstone válasza #68216320 (#9137) üzenetére


Aethelstone
addikt

Dobj már ide valami kódot....egyébként meg.....

[ Szerkesztve ]

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9139) #68216320 válasza Aethelstone (#9138) üzenetére


#68216320
törölt tag

Jelenleg ott tart a dolog, hogy jó a szöveg megjelenítése, ha a fordító és a VM is UTF8-al van indítva.
Viszont ékezetes bevitelnél hibát kapok:

OS X-en nincs vele gond.

import java.util.*;

class ReadTest {
public static void main ( String[] arguments ) {
System.out.println("Írj be valamit: ");
char key;
Scanner scanerObj = new Scanner(System.in,"UTF-8");
key = scanerObj.next().charAt(0);
System.out.println("key: ' " + key + "'");
}
}

Fordító:
javac -encoding UTF-8 %Name%.java

VM:
chcp 65001 (utf8-ra váltja a konzolt)
Java -Dfile.encoding=UTF-8 %Name%

[ Szerkesztve ]

(#9140) togvau válasza Aethelstone (#9136) üzenetére


togvau
senior tag

Még működik az eredeti fordítása rendesen, úgyhogy inkább csak átírtam a forráskódban és fordítottam.

hitler, sztálin, micro usb

(#9141) #68216320 válasza #68216320 (#9139) üzenetére


#68216320
törölt tag

Még mindig nem sikerült megoldani. Szóval ha valakinek van ötlete ... :)

(#9142) disy68 válasza #68216320 (#9141) üzenetére


disy68
aktív tag

Helló, jó kis probléma :)

Hirtelen olyat találtam, hogy:
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class Main {
private static final String UTF_8 = "UTF-8";
private static final String INPUT_MESSAGE = "Írj be egy betűt: ";

public static void main(String[] args) throws UnsupportedEncodingException {

try (Scanner scanerObj = new Scanner(System.in, UTF_8);
PrintStream out = new PrintStream(System.out, true, UTF_8)) {

while (true) {
out.print(INPUT_MESSAGE);
out.println(String.format("key: '%s'", scanerObj.next().charAt(0)));
}
}
}
}

Ezzel helyesen kezeli a scanner által utf-8-nak beolvasott betűket, viszont az INPUT_MESSAGE-et nem. Amit találtam még, hogy indítani a -Dfile.encoding=IBM437 (nálam ez az alapértelmezett kódlap chcp parancs megmondja) paraméterrel, bár ezzel nem kísérletezgettem szóval nem tudom működne-e helyesen.

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#9143) Taoharcos válasza #68216320 (#9137) üzenetére


Taoharcos
aktív tag

Mindenképpen UTF-8 kell? Nem jó a cp1250?

(#9144) #68216320 válasza Taoharcos (#9143) üzenetére


#68216320
törölt tag

Az a gond, hogy a forráskódot és a class-t felhasználnák majd osx es linux rendszereken is. Uft8 kellene. Igazából már csak a bevitelt kellene valahogy megoldani. Gondolom az UTF8 ékezetek 2bytes tárolása okoz gondot, de egyelőre nem tudom pontosan mi a gond csak tippelek.
Kipróbáltad ahogy leírtam és neked is ezt az eredményt adja?

(#9142) disy68:

Nálam a fentebb leírt UTF-8 beállításaimmal fordítva/futtatva az INPUT_MESSAGE helyesen jelenik meg, de ékezetet beírva a out.println(String.format("key: '%s'", scanerObj.next().charAt(0))); sornál ugyanazt a hibát adja, mint amit már mutattam.

[ Szerkesztve ]

(#9145) Taoharcos válasza #68216320 (#9144) üzenetére


Taoharcos
aktív tag

Igen.
De ha UTF-8 helyett cp1250 van akkor jó.

[ Szerkesztve ]

(#9146) Taoharcos válasza #68216320 (#9144) üzenetére


Taoharcos
aktív tag

Vagy egy kis plusz kóddal eldöntöd milyen oprendszeren fut a program (System.getProperty("os.name")), és annak megfelelő karakter kódolást használod.
Találtam egy oldalt, ami szépen leírja, de nem próbáltam ki a kódot.

[ Szerkesztve ]

(#9147) Chesterfield


Chesterfield
senior tag

Lenne egy Mavenes kédésem:

A POM-ban meg tudom valahogy hivatkozni a settings.xml-ben szereplő felhasználónevet?

<servers>
<server>
<id>localhost</id>
<username>xy</username>
<password>12345</password>
</server>
</servers>

valami ilyesmi módon:
${settings.servers.server.username} ?
csak ez nyilván nem működik.

[ Szerkesztve ]

(#9148) Aethelstone válasza Chesterfield (#9147) üzenetére


Aethelstone
addikt

Ilyesmi? (Bocs, mobil)

https://maven.apache.org/examples/injecting-properties-via-settings.html

[ Szerkesztve ]

MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...

(#9149) Chesterfield válasza Aethelstone (#9148) üzenetére


Chesterfield
senior tag

Valami ilyesmi :)

Ezt találtam végül, de nem hinném, hogy ez a legjobb megoldás, nem is nagyon használják.

Ezzel így tudok a POM-ban hivatkozni rá:
${settings.servers.localhost.username}

[ Szerkesztve ]

(#9150) motoflug


motoflug
őstag

Sziasztok!

Szeretnék jobban belemélyülni a Java tanulásba, de magamat ismerve akkor megy igazán, ha ezt egy tréner mellett teszem, 'házikkal', stb. stb. Tudnátok Budapesten jó tanárt/kurzust ajánlani, ahol rendesen átadják a tudást?

Ezt a képzést találtam, nem tudom milyen nívót képviselnek.

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.