Hirdetés

2024. május 18., szombat

Gyorskeresés

Útvonal

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

Hozzászólások

(#2601) Davs


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

(#2602) Davs


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?

[ Szerkesztve ]

(#2603) Lacces válasza Davs (#2602) üzenetére


Lacces
őstag

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 ;)

(#2604) Davs válasza Lacces (#2603) üzenetére


Davs
tag

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

(#2605) Chipi333 válasza Davs (#2602) üzenetére


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

(#2606) Davs válasza Chipi333 (#2605) üzenetére


Davs
tag

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

[ Szerkesztve ]

(#2607) modder válasza Davs (#2602) üzenetére


modder
aktív tag

Ahogy Chipi333 is írta, a get-eket tudod láncolni.
Amúgy gondolkodtam Map-en is pl.:

http://pastebin.com/rG5JwkzA

[ Szerkesztve ]

(#2608) modder válasza Davs (#2606) üzenetére


modder
aktív tag

gondolom a setCand()-on belül látod, hogy mikor változtattál egy elemet, akkor true-val térsz vissza.
Ha összeadod az nyilván nem biztos eredmény. egyébként ha 81 element egyenként összehasonlítasz, az p*csa, semmit nem számít. egyébként is csak az első különbözőségig kell menni a ciklusban.

(#2609) Lacces


Lacces
őstag

Sziasztok!

Beszélgettünk múltkor a Java webes használhatóságáról. JSP és JSF.
Most hogy volt a loguton egy saját szerveres cikk így még inkább felkeltette az érdeklődésemet (ezzel kiütésre sodorva az asp.net-et is)

Az MVC-t leszámítva, vannak JSP/JSF-hez is tervezési minták? Hogyan érdemes egy weboldalnak neki kezdeni melyeket mikor érdemes használni, stb.
Tippek, tanácsok.

Ha saját szerveren akarok üzemeltetni ilyet akkor a szoftvereket belehet szerezni ingyen, vagy valamihez kell licenszet fizetnem?

(#2610) Davs


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

(#2611) Lacces válasza Davs (#2610) üzenetére


Lacces
őstag

Nemtudom, hogy lehet-e de ha készen van, vagy így a kódot megosztod? (Engem érdekelne, tanulmányozási célból) Ha nem, teljesm mértékben megértem! :R

(#2612) ArchElf válasza Lacces (#2611) üzenetére


ArchElf
addikt

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

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2613) Davs válasza ArchElf (#2612) üzenetére


Davs
tag

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

(#2614) Lacces válasza Davs (#2613) üzenetére


Lacces
őstag

:R

(#2615) Ricqy


Ricqy
tag

Sziasztok!
Olyan kérdésem lenne, hogy van-e ARMv6-ra Java értelmező?
Szeretnék venni egy Raspberry Pi gépet, de programozási (tesztelési) célra.

Dealloc makes the ARC-angels cry.

(#2616) ArchElf válasza Davs (#2613) üzenetére


ArchElf
addikt

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

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2617) ArchElf válasza Ricqy (#2615) üzenetére


ArchElf
addikt

FYI

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2618) Ricqy válasza ArchElf (#2617) üzenetére


Ricqy
tag

Köszi

Dealloc makes the ARC-angels cry.

(#2619) ArchElf válasza ArchElf (#2616) üzenetére


ArchElf
addikt

Felraktam ide: [link]

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2620) Davs válasza ArchElf (#2616) üzenetére


Davs
tag

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

(#2621) ArchElf válasza Davs (#2620) üzenetére


ArchElf
addikt

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

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2622) Davs válasza ArchElf (#2621) üzenetére


Davs
tag

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)

[ Szerkesztve ]

(#2623) ArchElf válasza Davs (#2622) üzenetére


ArchElf
addikt

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

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2624) Davs válasza ArchElf (#2623) üzenetére


Davs
tag

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

[ Szerkesztve ]

(#2625) ArchElf válasza Davs (#2624) üzenetére


ArchElf
addikt

Megoldani simán megoldja, hisz ott van benne a BF - csak azt mondtam, hogy az idő nagy részét BF-ban tölti :DDD

Én SimpleSudoku-val játszottam, az tud generálni húzós puzzle-okat.

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#2626) Lacces válasza Davs (#2624) üzenetére


Lacces
őstag

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

(#2627) Lacces


Lacces
őstag

Sziasztok!

Az lenne a kérdésem, hogy majd Java-s weboldalt akarok létrehozni, és vannak-e az MVC-n kívül hasznos és fontos tervezési minták? Amiket érdemes használni, esetleg példákkal? Tipikusa Java-hoz.
Nekem ezek használatában nincs tapasztalatom.

(#2628) modder válasza Lacces (#2627) üzenetére


modder
aktív tag

az MVC az architektúra, nem tervezési minta. tervezési minta nagyon sokféle van, és sokfélét lehet használni MVC-n belül is, hogy egyszerűsítsd, hordozhatóbbá tedd a kódodat.

Én nem tudok hirtelen mást architektúrát MVC-n kívül, szerintem ez a legelterjedtebb.
De hogy valami érdemi információt is mondjak, én még ketté tudnám osztani az MVC model rétegét:

Model:
DAL - Data Access Layer
BLL - Business Logic Layer
Controller
View

A DAL fogja tartalmazni az alap objektumaidat a modelledben, általában ezt valósítják meg a külfönféle ORM-ek. (ügyfél, autó, számla, kutyafüle...) Más értelmezésben, ahogy a neve is mutatja: ez a réteg kommunikál közvetlenül az adatbázissal: create, update, read, delete

A BLL pedig komplexebb feladatok megoldása a DAL-béli objektumokon, amiknek nincsen köze még a view-hoz vagy a program flow-hoz, amit a controller biztosít.
Például: Ha egy banki szoftvert csinálsz, és regisztrálsz egy új felhasználót, akkor BLL-ben cisnálod meg a regisztrál függvényt, ami a DAL rétegben létrehoz egy felhasználót és egy kezdő számlát is.

(#2629) Lacces válasza modder (#2628) üzenetére


Lacces
őstag

Igen-igen, az MVC arhcitecktúra, ezt így összemostam,
De köszönöm a DAL és a BLL réteg leírását! Esetleg erre van példa linked?

Igen, és tervezési mintákra(design patternek) te melyiket javasolod? Példákkal.

2 dolog lenne,
Az egyik, nem más lenne, hogy folyamatosan kérdések lennének kiírva, Csak annyit, hogy 2-3 témára koncentrálodnának a kérdések (bár lehet ehhez felesleges)

A másik, hogy diagramokkat jelenítenék meg. Lenne id, címe, stb. És egy dinamikusan adattag is lenne, az pedig az oszlopok (ez egy List lenne például, vagy egy 2 dimmenziós tömb), az egyik ilyen diagram objektumnak az oszloplistája, 4 oszlopot tartalmazna (értéket), a másik meg például 8-at.
De ezek folyamatosan is változnának, vagyis az oszlopokhoz tartozó érték (adatbázisból jönnének az értékek)
És egy ilyen 2 dimmenziós tömböt érdemes-e mással kiváltani? Például egy List, Treemap?
Mapekre gondoltam, mert lenne kulcs, és hozzátartozó érték. Csak ahogy írtam a mappek mérete mindig más-más lenne, mert diagram objektumonként változik (a válaszadási lehetőségek kiértékelése)

Esetleg felhasználók kezeléséhez? Én mondjuk itt az abstract factoryra gondoltam, lenne az egyszerű user, moderátor és admin.

Elméletben tanultam a tervezési mintákról, csak szeretném gyakorlatban is alkalmazni. :R

(#2630) modder válasza Lacces (#2629) üzenetére


modder
aktív tag

Ezek alapján az információk alapján nehéz eldönteni, hogyneked milyen tervezési mintákra van szükséged, az meg a másik, hogy olyan sok tapasztalatom nekem sincsen, hogy séróból vágjak 10-20 mintát :D

Ahogy látom, szeretnéd jól átgondoltan elkezdeni a projektedet, ami mindenképpen jó. Ehhez tudok adni pár tanácsot, ezek elcsépeltnek tűnhetnek, de érdemes betartani őket, hogy ne idő közben jöjj rá, hogy valami szar vagy nem elég rugalmas

Specifikáció: Mindenképpen próbáld meg jól specifikálni azt, amit szeretnél az oldalon: Milyen adatokat akarsz megjeleníteni, hogy akarod megjeleníteni, a felhasználók milyen interakciókra képesek az oldalon (use-case-ek), hogyan akarod őket elszeparálni egymástól. Milyen oldalak lesznek egyáltalán. Ez az alapja az egésznek, ha ebben nem vagy biztos, akkor gondolkodj még rajta.

Modell/Adatbázis: A speci függvényében találd ki a modelledet. Vagy adatbázisból indulj, vagy osztályokból. Én adatbázis modellből indulnék, mert tudom, hogy úgy biztosan hatékony és normalizált lesz az adatbázis (már hanem valami elosztott/no-sql megoldást teszel mögé). Ez még csak az adatok és az adatok közötti interakció, ebben nincsen benne a felhasználói input meg böngészés.

Modell 2 /BLL: Az adatbázis alapján megtervezed a modelledet, osztályokat, amik képesek mindenfélét elvégezni az adatbázisban, amire szüksége lehet a szoftverednek: új diagram, diagram lekérdezése, kérdések, tárátáttá... Itt már érezni fogod, hogy mik azok a pontok, amiket lehet, hogy egyszerűbben is meg lehetne valósítani valami design patternnel, és akkor felmész wikipédiára, és véginézed az összeset :D

Na, ha ezekkel megvagy, és úgy látod, kiválóan meg tudsz valósítani mindent modell szinten, amit szeretnél, akkor már "gyerekjáték" lesz megcsinálni a controllert és a view-kat, amik az adatokat megjelenítik. Ne felejtsd el, hogy a Java erősen objektumorientált nyelv, ezért nagyon is van értelme osztályokban gondolkodni.

Egy szó, mint száz: Tervezés, tervezés, tervezés!

Persze lehet, hogy fognak jönni azok, akik mondják, hogy manapság az agilis módszertanokat használják a gyors szoftverfejlesztés miatt, és nem kell ennyi időt szánni a tervezésre... erre csak azt tudom mondani, hogy: DE! :D

(#2631) Lacces válasza modder (#2630) üzenetére


Lacces
őstag

Köszi, még van idő a megvalósításig, addig gondolkodom rajta, csak amikor már neki esek a JSP/JSF tanulásának akkor már egyből tolni is akarom a projektet.
De ezt a DAL és BLL-t még kódszinten is látni akarom, előtte. Most így belekavarodtam.

DAL: például: objektum beszúrás, módosítása, törlése az adatbázisban
BLL például: Diagram objektum, Felhasználó objektumok

Igazából ahogy a munka és egyetem során is ismerkedem a dolgokkal én MongoDB-re gondoltam (nosql) neked erről mi a véleményed?

Én addig szívesen tervezek :).

[ Szerkesztve ]

(#2632) Davs válasza Lacces (#2626) üzenetére


Davs
tag

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

(#2633) sutszi válasza Lacces (#2631) üzenetére


sutszi
veterán

Én nemrég azt hallottam, hogy bár még az elején jár a NoSQL már most nagyon gyors...egy adott teszten 50%-ot vert a MySQL-re...
Állítólag ez a jövő...

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#2634) modder válasza sutszi (#2633) üzenetére


modder
aktív tag

Ez úgy hangzott, mintha cinikusan idéztél volna egy 4 évvel ezelőtti cikket :D -- de amúgy igazad van részben. még annyival egészíteném ki, hogy ez természetesen nem jelenti azt, hogy bármilyen esetben lecserélhető egy relációs adatbázissal. És még jó darabig sok helyen nem is fogják lecserélni.

(#2635) modder válasza Lacces (#2631) üzenetére


modder
aktív tag

(#2636) sutszi válasza modder (#2634) üzenetére


sutszi
veterán

Visszaolvasva tényleg...Bár nem szándékos.
Trónfosztás biztos nem lesz egyenlőre...inkább olyan helyeken fogják jobban nyomni ahol meg kezdeni a felhasználást ahol sokkal előnyösebb lesz a relációs adatbázisnál. De elég érdekes.

Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage

(#2637) Lacces


Lacces
őstag

köszönöm a válaszokat mindenkinek! :R

(#2639) Ricqy


Ricqy
tag

Sziasztok!
Segítséget szeretnék kérni. Egy programot szeretnék írni ami fájlból olvas és abba ír, de csak egy bizonyos részt.
Pl.: "abc" "def"
És ebből kiolvasná, kiírná az első idézőjelben lévőt (abc), majd a kapott bemenetet beírná a második idézőjel közé a def helyére.
Ha van valakinek ötlete kérem segítsen, gugliban nem jutottam semmire.
Köszönöm!

Dealloc makes the ARC-angels cry.

(#2640) modder válasza Ricqy (#2639) üzenetére


modder
aktív tag

Hali!
talán ez http://www.javapractices.com/topic/TopicAction.do?Id=42

itt pedig fönt van egy jó kis ábra, hogy melyik osztályt mire tudod használni:
http://docs.oracle.com/javase/tutorial/essential/io/file.html

Én a helyedben azt csinálnám, hogy beolvasnám a fájlt sorról sorra. Megváltoztatnám soronként ami kell, és egyből írnám ki egy másik fájlba (BufferedReader, BufferedWriter). A procedúra végén pedig ezt a tmp fájlt átnevezném az eredeti fájlra.

A kicserélés könnyen megy String függvényeivel. Reguláris kifejezéseket ne használj, mert Javaban nagyon lassú.

Ha nem akarod megkeseríteni az életed, akkor arról tegyél le, hogy egy fájlt szimultán olvasol és írsz :D nem is hatékony

(#2641) modder válasza modder (#2640) üzenetére


modder
aktív tag

(#2642) Ricqy válasza modder (#2640) üzenetére


Ricqy
tag

Ez így meg is van, csak mostani állapotában visszaírja a másik fájlba az eredetit plusz a bemenetet, tehát konkrétan a kicserélésnél akadtam meg.

Dealloc makes the ARC-angels cry.

(#2643) modder válasza Ricqy (#2642) üzenetére


modder
aktív tag

Akkor a StringBuildernek például az indexOf, replace, insert metódusai lehetnek a barátaid. Ezekkel próbálkozz. Akár a String.replaceAll is mehet végülis. Bár ez regex kifejezést vár, de ha egyébként is felhasználói inputra kell várni, akkor ez nem sokat dob a latba.

például indexOf operátorral rákeresel a két határoló karakterre, ami között a kicserélendő szöveg van, elmented a két karakter pozicióját, majd StringBuilder.insert metódusával beteszed közéjük az újat. Ilyesmikre kell gondolni.

Lehet jobban jársz, ha letöltöd az Apache StringUtils könyvtárat. elég hasznos.

(#2644) Ricqy válasza modder (#2643) üzenetére


Ricqy
tag

A kicserélés megvan, az indexOf is, de csak az első " helyét tudom elmenteni, a másodikat nem. Meg még az rejtély számomra, hogy lehetne a két pozíció közti karaktert kiírni.

Dealloc makes the ARC-angels cry.

(#2645) modder válasza Ricqy (#2644) üzenetére


modder
aktív tag

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring(int, int)

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#indexOf(int, int)
azaz megkeresed az " első előfordulását, elmented az indexet, ahol van, majd a következő keresését ettől az indextől kezded

(#2646) birno


birno
addikt

Sziasztok,

Suliba kell egy kot prog, amit nekunk kell kitalalni es megirni bizonyos szempontok menten.
Eleg erdekesek szerintem, foleg az, hogy csak azt kell tartalmaznia ami teljesiti a megadott felteteleket, nehogy nagyobb legyen annal. :)
Vannak otleteim, de mivel mindent bele kellene suriteni egy minel egyszerubb programba, ezert nagyobbreszt elvetem oket, mert mindig tulbonyolitom a vegere.
Van valami egyszeru tipuspelda ami lefedi a felsoroltakat?

Nem kell kod, megirom en, csak utalom az ilyen feladatokat, mert ez tipikusan olyan amibe ott kotnek bele ahol nem szegyellik, mivel definialatlan maga a program, emiatt jo lenne par otlet amiket esetleg masok mar tapasztalatbol tudnak, hogy elszoktak fogadni.
Koszi.

(#2647) Lacces válasza birno (#2646) üzenetére


Lacces
őstag

Hát ez melyik suli?

(#2648) Lacces válasza birno (#2646) üzenetére


Lacces
őstag

Nálunk azért több volt, de az szívatosabb :D mert függvény be és kimenete is és hogy mit csináljon, és a legtöbbször csak aktív fórumozás és 1 napi gondolkodás segített (google nem)

Esetleg egy Járműves valamit.

Gépjármű mint interfész, itt definiálod a, hogy az osztályok mely metódusakat valósítsák meg.
(például max sebessége)

Autó, mint egy ősosztály
TeherAutór, mint egy gyermek (így már tudod a super()-t meghívni és a toString esetén a super.ToString()

A többit meg rád bízom

(#2649) birno válasza Lacces (#2648) üzenetére


birno
addikt

SZTE.
Az szerintem amugy sokkal jobb ha megvan hatarozva, hogy mit kell csinaljon, mit kezeljen le, stb, a tavalyi beadando olyan volt hogy, 2 feladat specifikalva, 1-1 napot elszorakoztam vele hasonlokepp amint irod, de ott legalabb fixen tudtam hogy mit csinaljak.

Ilyen egyszeru dolgok nekem is eszembe jutottak, en amugy egy kvizes cuccra gondoltam, egy kviz interface, abbol kulonbozo tipusu kvizek, megoldasok private-ba, kvizek egy tombbe, peldanyositas nelkul statikus metodusokkal elkerni a nevuket, adataikat ckilusba amihez iteratort hasznalok stb, ott akadtam meg, hogy a protected tagot hogy vigyem bele ertelmesen, ugy hogy latszodjon, hogy ertem, akkor ket package kellene, na de akkor a masodikba kellene az elsobol hasznalni valamit amivel szemleltetem, hogy a protectedet nem erhetem el, na de mit, ugy hogy ne legyen tul bonyolult atnezni a gyakveznek, mert ugye ezt is leirtak. :)

Na mindegy, hatha jon meg valaki valami jo otlettel, ha nem, akkor holnap nekiallok s valahogy osszekalapalom a szuper all-in-one progit. :)

(#2650) birno


birno
addikt

Elkezdtem a progit, de van egy erdekesseg amit nem ertek, adott az alabbi kodreszlet:

public int readInt() {
int szam = 0;
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));

try{
do{
try{
szam = Integer.parseInt(is.readLine());
break;
}catch (NumberFormatException e){
System.err.println("Kérem csak egész számot adjon meg!");
};
}while(true);

is.close();
}catch (IOException ex){
System.err.println("Nem olvasható a bemenet!");
}

return szam;
}

public int kvizValasztas() {
int sorszam = 0;

do{
sorszam = this.readInt();
if(sorszam > this.elerhetoKvizek.length || sorszam <= 0 ){
System.out.println("Hibás számot adott meg, kérem adja meg újra: ");
}else{
break;
}

}while(true);

return sorszam;
}

Hibas bemenet eseten mikor masodjara megy bele a readInt() fuggvenybe, akkor ahelyett, hogy bekerne a szamot belefut a catch agba, miszerint IOException van.
Ha kiveszem az is.Close(); sort, akkor minden ok, de nem ertem, hogy miert, mindig egy uj BufferedReader-t inicializalok, nem a mar korabban lezartbol olvasnek. :F

[ Szerkesztve ]

Útvonal

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