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 | 350772 (90775) | Macketina |
| » | [Java] Multi Client chat serverOddelek: Programiranje | 2735 (2006) | javaMaster |
| » | [java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zahtOddelek: Programiranje | 2469 (2469) | infiniteLoop |
| » | Java - JBoss - Servlet - getOutputStream() has already been called for this responseOddelek: Programiranje | 1186 (1103) | kopernik |
| » | Kako pošiljanje datotek v JAVI.Oddelek: Programiranje | 1977 (1848) | kopernik |