Forum » Programiranje » [naloga-java] tokovi stevil
[naloga-java] tokovi stevil
urosz ::
V šoli sem dobil nalogo:
Napiši program, ki v že obstoječi datoteki celih števil spremeni vsako 2. vrednost tako, da jo pomnoži z 2.
da bi lahko testiral vse skupaj, sem prvo spisal tole kodo, ki vpiše 5 naključnih števil v datoteko
To deluje. Nato sem napisal drug razred, v katerem bi vsako drugo število pomnožil z 2.. Uporabiti moram RandomAccessFile razred (navodila od profesorja).
Seveda ne deluje, ne pomaga mi tudi google :P :S
prosim za pomoč :P
Napiši program, ki v že obstoječi datoteki celih števil spremeni vsako 2. vrednost tako, da jo pomnoži z 2.
da bi lahko testiral vse skupaj, sem prvo spisal tole kodo, ki vpiše 5 naključnih števil v datoteko
Random g=new Random(); DataOutputStream izhod=new DataOutputStream(new FileOutputStream("stevila.dat")); for (int i=1; i<=5; i++) { int x=g.nextInt(101); izhod.writeInt(x); System.out.println(x); } izhod.close();
To deluje. Nato sem napisal drug razred, v katerem bi vsako drugo število pomnožil z 2.. Uporabiti moram RandomAccessFile razred (navodila od profesorja).
RandomAccessFile dat=new RandomAccessFile("stevila.dat","rw"); boolean sodo=false; dat.seek(0); while ( dat.getFilePointer() < dat.length()) { if (sodo) { int stevilo=2*dat.readInt(); dat.seek( dat.getFilePointer()-1); System.out.println(st); dat.writeInt(st); } if (!sodo) sodo=true; if (sodo) sodo=false; } dat.close();
Seveda ne deluje, ne pomaga mi tudi google :P :S
prosim za pomoč :P
KaRkY ::
RandomAccessFile dat=new RandomAccessFile("stevila.dat","rw"); boolean sodo=false; dat.seek(0); while ( dat.getFilePointer() < dat.length()) { if (sodo) { int stevilo=2*dat.readInt(); System.out.println(st); dat.writeInt(st); } if (!sodo) sodo=true; if (sodo) sodo=false; dat.seek( dat.getFilePointer()+1); //FilePointer povečaš za 1 ti si ga zmanjšal in ga v vsakem primeru povečaš } dat.close();
To je čist tak iz glave nisn 100% če dela.
When you look long into an abyss, the abyss looks into you
urosz ::
ne dela.. vbistvu sem komaj zdaj ugotovil, da bi se moral kazalec premikat za 4, ker vpisujem int, in za vpis enega int števila zasede 4 byte. ker sem vpisal 5 int števil, kar je zneslo 20 bytov (tako vrne lentgh())
pa pomojem moram vseeno kazalec odštevat, ker ob vsaki v-i operaciji se kazalec pomika naprej, torej recimo v začetku zanke:
kazalec: 0
izvedem readInt(): 4
kazalec spremenim za -4: 0
pišem na lokaciji 0: spet na 4
in gremo na naslednjo iteracijo zanke.. kazalec: 5
naslednja iteracija 9, potem 14 in 19. in smo pri koncu zanke.
Tako si jaz predstavljam ta "algoritem", ki pa ne deluje :P
+ edit: to je seveda če sodo vrne true.. za false, moram ročno kazalec povečati za 4, saj ga v-i enote ne povečajo.
pa pomojem moram vseeno kazalec odštevat, ker ob vsaki v-i operaciji se kazalec pomika naprej, torej recimo v začetku zanke:
kazalec: 0
izvedem readInt(): 4
kazalec spremenim za -4: 0
pišem na lokaciji 0: spet na 4
in gremo na naslednjo iteracijo zanke.. kazalec: 5
naslednja iteracija 9, potem 14 in 19. in smo pri koncu zanke.
Tako si jaz predstavljam ta "algoritem", ki pa ne deluje :P
+ edit: to je seveda če sodo vrne true.. za false, moram ročno kazalec povečati za 4, saj ga v-i enote ne povečajo.
Zgodovina sprememb…
- spremenil: urosz ()
urosz ::
jap - tako je, sem rešil končno. še prilepim rešitev, drugače pa se lahko zaklene tema
RandomAccessFile dat=new RandomAccessFile("stevila.dat","rw"); boolean sodo=false; int stevilo; // množenje vsakega drugega števila dat.seek(0); while ( dat.getFilePointer() < dat.length()) { if (sodo) { stevilo=2*dat.readInt(); dat.seek(dat.getFilePointer()-4); dat.writeInt(stevilo); sodo=false; } else { sodo=true; dat.seek(dat.getFilePointer()+4); } } dat.close()
Zgodovina sprememb…
- spremenil: urosz ()
infiniteLoop ::
btw: kaj pa manjka metodi readInt na RandomAccessFile-u?
None of us is as dumb as all of us.
infiniteLoop ::
Ah nic nic, my bad. Nekaj sem hotel pametovati, pa nisem pozorno prebral tvoje kode.
None of us is as dumb as all of us.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Davčne blagajne (strani: 1 2 3 4 … 24 25 26 27 )Oddelek: Programiranje | 332095 (72098) | Macketina |
» | [Java] Multi Client chat serverOddelek: Programiranje | 2504 (1775) | javaMaster |
» | [java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zahtOddelek: Programiranje | 2257 (2257) | infiniteLoop |
» | Java - JBoss - Servlet - getOutputStream() has already been called for this responseOddelek: Programiranje | 1058 (975) | kopernik |
» | Kako pošiljanje datotek v JAVI.Oddelek: Programiranje | 1833 (1704) | kopernik |