Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [Java] txt bestanden inlezen probleempje (https://forum.scholieren.com/showthread.php?t=1047729)

bulbanos 19-12-2004 17:35

[Java] txt bestanden inlezen probleempje
 
Hey

ik heb een "telefoonboek" in .txt formaat staan en ik moet daarbij een programma maken die dat kan inlezen.
Ik doe dit via een 'BufferedReader out' en daarna out.readLine();

maar nu heb ik iemand met een achternaam van meerdere woorden en als ik die inlees krijg ik geen String maar een String rij :(

Kan ik dus een String rij naar 1 String omzetten?

Fade of Light 19-12-2004 17:41

Kan je niet werken met .Tostring() ?

bulbanos 19-12-2004 18:25

Citaat:

Fade of Light schreef op 19-12-2004 @ 18:41 :
Kan je niet werken met .Tostring() ?
een rij heeft geen toString() methode

Fade of Light 19-12-2004 18:28

Je kan in een lusje toch wel de rij achter elkaar plakken?!

Die .tostring was een beetje kansloos :o

bulbanos 19-12-2004 19:25

nee, dat is als je er van uitgaat dat het hoe dan ook een rij wordt, maar bij personen met een één woord achternaam gaat dat dan errors geven.

McMotion 19-12-2004 23:57

huh readLine() geeft gewoon een String terug hoor.. wat bedoel je met een rij trouwens? een array?

Kawoutertje 20-12-2004 09:32

Kan je de variabele waarin je je gegevens opslaat (wat dus ofwel een string-variabele is, ofwel een string-array) niet gewoon parsen naar een string-variabele. Zodat de string array in één string variabele gestoken wordt ?

Met javascript gaat dat alleszins, maar het is lang geleden dat ik nog in echte java geprogrammeerd heb.

Moet wel lukken denk ik hoor, trouwens, een string is eigenlijk toch gewoon een array van char's. Niet ?

Fade of Light 20-12-2004 16:19

Citaat:

bulbanos schreef op 19-12-2004 @ 20:25 :
nee, dat is als je er van uitgaat dat het hoe dan ook een rij wordt, maar bij personen met een één woord achternaam gaat dat dan errors geven.
Dat is wel heel maf, ik zou dan zeggen dat het een rij is, met slechts 1 element... Gare teringjava (n) :p

Lethalis 20-12-2004 16:54

Citaat:

bulbanos schreef op 19-12-2004 @ 18:35 :
ik heb een "telefoonboek" in .txt formaat staan en ik moet daarbij een programma maken die dat kan inlezen.
Ik doe dit via een 'BufferedReader out' en daarna out.readLine();

readLine() hoort altijd een String terug te geven en geen array:

http://www.cafeaulait.org/slides/int...javaio/57.html

http://java.sun.com/j2se/1.3/docs/ap....html#readLine()

Citaat:

Kan ik dus een String rij naar 1 String omzetten?
Juh, even alles bij elkaar optellen, maar ik vind het vaag dat je niet gewoon een String krijgt.

Fade of Light 20-12-2004 17:18

Trouwens, anders doe je een check of het een string is of stringarray, in geval van het laatste, zet je het ff om naar string, maar ik dnek dat er hier iets verkeerd gaat, want ik kan het me gewoon niet voorstellen :)

Chimera 21-12-2004 11:15

readLine() levert strings op, geen arrays van strings. Post je code eens, hier klopt niks van.

En: zo'n ding heet een array: geen rij.

McMotion 21-12-2004 14:23

Citaat:

Kawoutertje schreef op 20-12-2004 @ 10:32 :
Moet wel lukken denk ik hoor, trouwens, een string is eigenlijk toch gewoon een array van char's. Niet ?
nee, niet onder java

bulbanos 21-12-2004 15:11

Citaat:

Chimera schreef op 21-12-2004 @ 12:15 :
readLine() levert strings op, geen arrays van strings. Post je code eens, hier klopt niks van.

En: zo'n ding heet een array: geen rij.

mja excuseer :) blijkbaar heb je gelijk en was ik mis.

Chimera 21-12-2004 16:38

Citaat:

McMotion schreef op 21-12-2004 @ 15:23 :
nee, niet onder java
Intern wel.

McMotion 22-12-2004 21:56

Citaat:

Chimera schreef op 21-12-2004 @ 17:38 :
Intern wel.
er zit wel ergens een character array in de structuur van een String natuurlijk, maar het is een heel object op zich met z'n eigen velden en z'n eigen vtable, dus ook intern veel meer dan alleen aan character array

Chimera 23-12-2004 09:36

Citaat:

McMotion schreef op 22-12-2004 @ 22:56 :
er zit wel ergens een character array in de structuur van een String natuurlijk, maar het is een heel object op zich met z'n eigen velden en z'n eigen vtable, dus ook intern veel meer dan alleen aan character array
De string is een hybride tussen een echte class en een primitive. Intern wordt 'ie weldegelijk als een gewone array behandeld. Dat er aan boxing gedaan wordt doet daar niks aan af.

Chimera 23-12-2004 09:36

Maargoed. Gaan we nog code zien?

Lethalis 24-12-2004 09:36

Ja idd, zo kunnen we er weinig mee..

bulbanos 25-12-2004 16:58

ik wil gerust mijn code eens posten maar het probleem doet zich blijkbaar toch niet voor zoals ik dacht:
Code:

import java.io.*;
import java.util.*;

class Persoon {
    private String vnaam;
    private String fnaam;
    private Telefoonnummer Tel;
   
    public Persoon(String vnaam, String fnaam, Telefoonnummer Tel){
        this.vnaam=vnaam;
        this.fnaam=fnaam;
        this.Tel=Tel;
    }
    public Persoon(){     
    }
    public String geefVnaam(){
        return vnaam;
    }
    public String geefFnaam(){
        return fnaam;
    }
    public Telefoonnummer geefTel(){
        return Tel;
    }
    public String toString(){
        return fnaam+ ", "+vnaam+": "+Tel;
       
    }
    public Persoon leesIn() throws IOException{
        InputStreamReader isr = new InputStreamReader (System.in);
        BufferedReader in = new BufferedReader (isr);
        System.out.println("Geef voornaam en naam in: ");
        vnaam = in.readLine();
        fnaam = in.readLine();
        System.out.println("Geef telefoonnummer in: ");
        Tel = new Telefoonnummer(Integer.parseInt(in.readLine()), in.readLine(),Integer.parseInt(in.readLine()));
        Persoon p = new Persoon(vnaam,fnaam,Tel);
        return p;
    }
}
class Telefoonnummer{
    private int land;
    private String zone;
    private int tel;
   
    public Telefoonnummer(int land, String zone, int tel){
        this.land=land;
        this.zone=zone;
        this.tel=tel;
    }
    public int geefLand(){
        return land;
    }
    public String geefZone(){
        return zone;
    }
    public int geefTel(){
        return tel;
    }
    public String toString(){
        return "+"+land+"/"+zone+tel;
    }   
}

class Telefoonboek{
    private ArrayList personen = new ArrayList();
   
    public Telefoonboek(){
       
    }
    public void voegToe(Persoon p){
        personen.add(p);
    }
    public void gidsAfdrukken(){
        for(int i=0; i<personen.size(); i++){
            System.out.println(personen.get(i));
        }       
    }
    public void leesManueel() throws IOException{
        Persoon p = new Persoon();
        p.leesIn();
        personen.add(p);
    }
    public void schrijfWeg(String naam) throws IOException{
        PrintWriter out = new PrintWriter(new FileWriter(naam));
        for(int i=0; i<personen.size(); i++){
                Persoon p = (Persoon)personen.get(i);
                out.println(p.geefVnaam());
                out.println(p.geefFnaam());
                out.println(p.geefTel().geefLand());
                out.println(p.geefTel().geefZone());
                out.println(p.geefTel().geefTel());
        }
        out.close();
        System.out.println("Weggeschreven naar "+naam+" in je directory\n");
    }
    public void leesBestand(String naam) throws IOException{
        BufferedReader in=new BufferedReader(new FileReader(naam));

        try{
            while(true){
                String vnaam =in.readLine();         
                String fnaam=in.readLine();     
//  îîî hier dacht ik dat het mis zou lopen als er 'Van de Velde' stond, tis niet zo
                int l = Integer.parseInt(in.readLine());
                String z = in.readLine();
                int t = Integer.parseInt(in.readLine());
                Telefoonnummer telefoon = new Telefoonnummer(l,z,t);
                Persoon p=new Persoon(vnaam,fnaam,telefoon);
                personen.add(p);
            }           
        }catch(Exception e){}
        in.close();
    }
    public void zoekFamilie(String fam){
        ArrayList familie = new ArrayList();
        for(int i=0; i<personen.size();i++){
            if(fam.equals(((Persoon)personen.get(i)).geefFnaam())){
                familie.add(((Persoon)personen.get(i)));
            }
        }
        System.out.println(familie);
    }
}
public class TelefoonboekTest{
    public static void main(String [] args) throws IOException{
        InputStreamReader isr = new InputStreamReader (System.in);
        BufferedReader in = new BufferedReader (isr);
       
        Telefoonboek t = new Telefoonboek();
        System.out.println("Hoeveel personen gaan we inlezen?");
        int aantal = Integer.parseInt(in.readLine());
        for(int i=0; i<aantal; i++){
            t.leesManueel();
        }
        t.gidsAfdrukken();
        t.schrijfWeg("Yellow.txt");
       
        System.out.println("---------------------------------------------");
       
        Telefoonboek ingelezen = new Telefoonboek();
        ingelezen.leesBestand("Belgacom.txt");
        System.out.println("Ingelezen:");
        ingelezen.gidsAfdrukken();
        ingelezen.zoekFamilie("Peeters");
    }
}



Alle tijden zijn GMT +1. Het is nu 15:16.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.