Avatar billede robo_rage Nybegynder
04. december 2003 - 13:22 Der er 7 kommentarer og
1 løsning

objekt fra ¨tekst fil

Jeg vil gerne have oprettet et objekt i en arrayList ud fra tekst i en tekst fil. Har prøvet med en string tokenizer:
arrayList.add(new (st.nextToken()));
men der vil den godt have eklæret en type...

Det kan godt være det slet ikke er sådan er der nogen der lige har en idé?
Avatar billede robo_rage Nybegynder
04. december 2003 - 13:32 #1
hele programmet som jeg har lavet indtil videre ser sådan her ud:

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

public class Bane
{
    String line, hej, felt;
   
    public static void main(String []args)
    {
        if(args.length == 1)
        {
           
            String line;
            String delim  =":\n";
        try{
                BufferedReader in = new BufferedReader(
                                    new FileReader(args[0]));
                           
                                 
            while ((line = in.readLine()) !=null)
            {
                StringTokenizer st = new StringTokenizer(line, delim);
               
               
                System.out.print(st.nextToken());
            }           
               
            } catch (IOException e){System.out.println(e);}
       
        }
       
    }
   
    public void blah()
            {
               
                ArrayList al = new ArrayList();
       
                al.add(new (st.nextToken()));   
            }
}
Avatar billede arne_v Ekspert
04. december 2003 - 13:38 #2
Du skal vel have noget a la:

ArrayList al = new ArrayList();
while ((line = in.readLine()) !=null) {
    StringTokenizer st = new StringTokenizer(line, delim);
    al.add(st.nextToken());   
}           
               
eller:

ArrayList al = new ArrayList();
while ((line = in.readLine()) !=null) {
    StringTokenizer st = new StringTokenizer(line, delim);
    al.add(new X(st.nextToken()));   
}
Avatar billede robo_rage Nybegynder
04. december 2003 - 14:24 #3
ved den øverste får jeg jo bare oprettet et string objekt i arrayListen, hvordan får jeg oprettet præcist det der står i txt filen, f.eks.
objektNavn(attribut)?

Med hensyn til den nederste hvad skal X repræsentere?
Avatar billede arne_v Ekspert
04. december 2003 - 14:40 #4
X er et objekt oprettes ud fra strengen og hvor objektet gemmes i
array listen.
Avatar billede robo_rage Nybegynder
04. december 2003 - 15:07 #5
Problembeskrivelsen er ikke helt korrekt formuleret.

Det jeg gerne vil er følgende:
Jeg har en tekstfil der er kommasepererat ex. A, B, C
Jeg har klasser af typen A, B og C

Jeg vil slippe for at skulle skrive
Arraylist a = new ArrayList();
a.add(new A());
a.add(new B());
a.add(new C());
eller en masse if() sætninger, og i stedet læse tekstfilen ind
dele den ved kommaer vha StringTokenizer og bruge A, B og C som typen på de objekter jeg skal oprette, sådan at:

StringTokenizer st = new StringTokenizer("A, B, C", ",");
while(st.moreTokensLeft())    // pseudo kode...
{
a.add(new st.nextToken()());  // som opretter et objekt af typen svarende til det indhold som nextToken() returnerer i form af en String, dvs returnerer st.nextToken() en String der indeholder A, skal der laves et objekt af typen A
}


Det er i en større sammenhæng som det skal bruges senere, hvorfor det er smart hvis det kan gøres på denne måde.
Avatar billede arne_v Ekspert
04. december 2003 - 15:11 #6
a.add(Class.forName(st.nextToken()).newInstance());
Avatar billede arne_v Ekspert
04. december 2003 - 15:11 #7
(men jeg synes ikke at det er en pæn måde at gøre det på)
Avatar billede robo_rage Nybegynder
04. december 2003 - 15:26 #8
pænt er det ikke, men det virker... :)
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