Gå til innhold

Fra flatfil til tabell?


Anbefalte innlegg

Hallo,

 

Jeg prøver å løse en oppgave som jeg nå ikke bare ikke skjønner bæret av lengre :( Jeg har laget en liten forenling av det som er problemet for meg.

Først koden. Beklager navnevalget på klassene etc, men jeg har klødd meg i hodet i et par timer nå og da ble det sånn :)

 

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Dritt{ 
 private String fornavn;
 private String etternavn;
 private static char SKILLETEGN = '|';

 Dritt(String fornavn, String etternavn){
this.fornavn = fornavn;
this.etternavn = etternavn;
 }
 Dritt(){
fornavn = "Mega";
etternavn = "Kul";
 }
 String hentFornavn(){return this.fornavn;}
 String hentEtternavn(){return this.etternavn;}

 public String toString(){
return hentFornavn() + hentEtternavn();
 }

 public void testing(String fornavn, String etternavn){
this.fornavn = fornavn;
this.etternavn = etternavn;
 }

 public void lesFraFil(BufferedReader tekstLeser) throws IOException {
String post = tekstLeser.readLine();

int feltsluttIndeks1 = post.indexOf(SKILLETEGN);

String fornavn = post.substring(0, feltsluttIndeks1);
String etternavn = post.substring(feltsluttIndeks1 + 1);

this.fornavn = fornavn;
this.etternavn = etternavn;
 }
}

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.PrintWriter;
import java.io.IOException;

public class Drittest{

 public static void main(String[] args){

Dritt dritt = new Dritt();

System.out.println(dritt.toString());	

try {
  FileReader tekstFilLeser = new FileReader("kontakter.txt");
  BufferedReader tekstLeser = new BufferedReader(tekstFilLeser);

  int antallFolk = Integer.parseInt(tekstLeser.readLine());

  Dritt[] dritten = new Dritt[antallFolk];
  for(int i = 0; i < antallFolk; i++){

	dritt.lesFraFil(tekstLeser);
	System.out.println(dritt.toString());
	dritten[i] = dritt;

  }
  for(int j =0; j < 3; j++){
  System.out.println(dritten[j].toString());
  }
  tekstLeser.close();
}
catch (IOException unntak) {
  System.out.println("Feil");
}  
 }
}

 

Output er:

MegaKul

Ola|Nordmann|[email protected]

Kari|Nordmann|[email protected]

Per Ole|Nordmann|[email protected]

Per Ole|Nordmann|[email protected]

Per Ole|Nordmann|[email protected]

Per Ole|Nordmann|[email protected]

 

 

 

Åssen får jeg det oppdaterte objektet inn i tabellen? Og hvorfor skrives bare den siste raden av tabllen ut? "for"-løkken går jo gjennom hele?

 

Mulig jeg bare bommer helt her, men jeg forstår bare ikke hvor det går gale :(

 

Det jeg skal gjøre er å oppdatere objektet med informasjonen fra flatfilen for så å legge objektet inn i en tabell.

Endret av Doffar
Lenke til kommentar
Videoannonse
Annonse

// Du ser hvor denne skal...

Dritt[] dritten = new Dritt[antallFolk];
for(int i = 0; i < antallFolk; i++)
{
dritten[i] = new Dritt(tekstLeser.readLine());
}

// constructor for Dritt :)
Dritt(String drittlinje)
{
String[] delt = drittlinje.split(SKILLETEGN)
fornavn = delt[0];
etternavn = delt[1];
}

 

Utestet...

 

For å skrive ut info:

 

for (Dritt d : dritten)
{
System.out.println(d); // skriver ut Dritt-objektet, som definert i toString()
}

 

Oh btw...

 

	  
for(int i = 0; i < antallFolk; i++){

	dritt.lesFraFil(tekstLeser); // her er problemet, du jobber med det samme objektet hele tiden...
	System.out.println(dritt.toString());
	dritten[i] = dritt; // du setter dritten[i] til samme dritt for alle i...

  }

Endret av pifler
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...