Avatar billede kohaar Nybegynder
25. november 2003 - 20:31 Der er 18 kommentarer og
1 løsning

læs en double fra en fil

Hej.

Jeg har en tekstfil, med en masse numre i. Alle numrene er adskildt af et mellemrum. Jeg har indtil videre læst numrene ind som en streng, og derefter konverteret dem til eksempelvis int og double. Nu har jeg hørt, at der er en måde, at læse double og int direkte fra filen. Nogle der har et eksempel til hvordan det virker. Filen ser f.eks. sådan ud:

14.00 134.00 0.2 0.05 0.03
134.00 23.00 1.2 0.04 0.05
osv
Avatar billede arne_v Ekspert
25. november 2003 - 20:42 #1
Mig bekendt er der ikke sådan en metode.

DataInputStream har en readDouble som kan læse binære double's.
Avatar billede kohaar Nybegynder
25. november 2003 - 20:47 #2
Hmm... Det kan være, at det er derfor jeg ikke kan få det til at virke... Grunden til at jeg ville gøre det, er fordi det muligvis var hurtigere end at læse strengen og så lave den om til henholdsvis int og double.
Avatar billede kohaar Nybegynder
25. november 2003 - 20:48 #3
Er du klar på endnu et spørgsmål?
Avatar billede arne_v Ekspert
25. november 2003 - 20:49 #4
Det er meget meget hurtigere at læse binære doubles.

Men det er altså et helt andet fil indhold.
Avatar billede arne_v Ekspert
25. november 2003 - 20:50 #5
Jo.
Avatar billede kohaar Nybegynder
25. november 2003 - 20:54 #6
Yep. Min fil er som tekst, så kan ikke gøre så meget ved det. Kan selfølgelig lave den om til en binær fil. Vil jeg lige kigge lidt på.

Nå. Det andet spørgsmål.

Jeg henter mine data fra filen og smider dem i en ArrayList

list.add(new ImageData(100,101,102,103,104,105,106,107,108,109,110,111));

Når jeg gør det, får jeg en OutOfMemoryError. Kan det virkelig passe? Skal jeg i stedet lave flere lister for at få det til at virke?
Avatar billede arne_v Ekspert
25. november 2003 - 20:58 #7
Hvordan ser klassen ImageData og dens constructor ud ?
Avatar billede kohaar Nybegynder
25. november 2003 - 21:02 #8
Er først ved at lære om ArrayLists, så den er måske lidt simpel (hvis den overhovedet virker)


public class ImageData {
 
  private int x, y, direction, r1, r2, r3, g1, g2, g3, b1, b2, b3;
  public ImageData(int x, int y, int direction, int r1, int r2, int r3, int g1, int g2, int g3, int b1, int b2, int b3) {
      this.x = x;
      this.y = y;
      this.direction = direction;
  }
  public int getX() {
      return x;
  }
  public int getY() {
      return y;
  }
  public int getDirection() {
      return direction;
  }
  public int getR1() {
      return r1;
  }
    public int getR2() {
      return r2;
  }
  public int getR3() {
      return r3;
  } 
  public int getG1() {
      return g1;
  }
  public int getG2() {
      return g2;
  }
  public int getG3() {
      return g3;
  }
  public int getB1() {
      return b1;
  }
  public int getB2() {
      return b2;
  }
  public int getB3() {
      return b3;
  }
Avatar billede kohaar Nybegynder
25. november 2003 - 21:03 #9
Hmm... Kan da godt se det nu. Det er fordi jeg ikke har fået lavet this.r1 = r1 osv?
Avatar billede arne_v Ekspert
25. november 2003 - 21:05 #10
Ja - der mangler lidt assignmenst.

Men jeg kan nu ike se hvordan det skal give out of memory.
Avatar billede kohaar Nybegynder
25. november 2003 - 21:05 #11
Hmm.. Har vist siddet for længe ved puteren i dag ;-)
Avatar billede arne_v Ekspert
25. november 2003 - 21:06 #12
Kunne de evt. ikke gemms som 3 arrays med 3 elementer i.s.f. 9 enkelt værdier ?

Og hvis rgb er farve rgb - kune du bruger Color klassen ?
Avatar billede kohaar Nybegynder
25. november 2003 - 21:08 #13
Nu har jeg tilføjet alle de andre, og nu får jeg ikke fejlen mere?
Avatar billede arne_v Ekspert
25. november 2003 - 21:10 #14
Lykken er når det virke !

:-)
Avatar billede kohaar Nybegynder
25. november 2003 - 21:17 #15
Yep. Smid et svar og så nogle point. Ved godt du ikke rigtig svarede på noget af det, men er kommet langt videre pga. dig, så ud har fortjent dem. Havde virkelig stirret mig blind på den med memory, og så er jeg næsten færdig med at lave et program der konvertere en tekstfil om til en binary. Er genialt. Kan også sortere en masse redundant data fra i den process.
Avatar billede arne_v Ekspert
25. november 2003 - 21:19 #16
ok
Avatar billede kohaar Nybegynder
25. november 2003 - 21:20 #17
Hov. Havde slet ikke set dit svar med color? Ser ret godt ud. Forstår ikke hvad du mener, men hvis det kan gøre det nemmere for mig, er jeg game.

Jeg bruger værdierne til at sætte forskellige farver med f.eks. gr2D.setColor(new Color(r3,g3,b3));
Avatar billede arne_v Ekspert
25. november 2003 - 21:25 #18
Jeg mener at:

,int r1, int r2, int r3, int g1, int g2, int g3, int b1, int b2, int b3)

kunne erstattes af:

, Color c1, Color c2, Color c3)

eller måske endda:

, Color[] c)
Avatar billede kohaar Nybegynder
25. november 2003 - 21:29 #19
Ahh... Self. Vil gøre det lidt nemmere at overskue. Kigger jeg lige på, når jeg har fået det andet til at virke. Først skal jeg konvertere filen (skulle snart virke), og så skal jeg have lavet mit program om til at hente binær data, og bruge det i stedet for strenge. Kommer nok til at tage lidt tid :-)
Takker mange gange...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester