» »

[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

  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.

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.

urosz ::

am.. ne razumem kaj misliš s tem

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

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344329832 (69835) Macketina
»

[Java] Multi Client chat server

Oddelek: Programiranje
262472 (1743) javaMaster
»

[java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zaht

Oddelek: Programiranje
132229 (2229) infiniteLoop
»

Java - JBoss - Servlet - getOutputStream() has already been called for this response

Oddelek: Programiranje
81042 (959) kopernik
»

Kako pošiljanje datotek v JAVI.

Oddelek: Programiranje
141819 (1690) kopernik

Več podobnih tem