ArrayList Zugriff

shysdrag

Grünschnabel
Also das programm liest Namen aus einer txt in eine NameList ein und soll dann zufällig einen Vornamen und Nachnamen auswählen. Dieser neue Name soll dann ausgegeben werden. Das prog kompiliert soweit nur kann ich ein bestimmtes Element aus der Liste nicht ansprechen. Hab da keinen Plan wie ich das anstellen könnte bzw klappt das nicht so wie ich es versuche. Diese zeilen 79-80 machen mir Probleme String tmp = NameList.get(zufall); und System.out.print(tmp.GetVorname);
Wär nett wenn jemand helfen könnte. evtl gehe ich die Sache ja komplett falsch an.

ps: hab bis jetzt nur c programmiert und is jetzt ne gewaltige umstellung

Code:
import java.io.*;
import java.util.*;

class Name
{
    private String m_vorname;
    private String m_nachname;

    public Name(String vorname, String nachname)
    {
        m_vorname = vorname;
        m_nachname = nachname;
    }
    public String GetVorname()
    {
        return m_vorname;
    }
    public String GetNachname()
    {
        return m_nachname;
    }
}
       
public class rng 
{    
    public static void main(String[] args)
    {

        Random rn = new Random();

        if(args.length == 0)
        {
            //eigene Namen nehmen
        }

        else if ( args.length == 1 )
        {
            ArrayList NameList = new ArrayList();
            int ary_laenge = 0;

            try
            {
                java.io.LineNumberReader in = new LineNumberReader(new FileReader(args[0]));

                // loop through the file
                while(in.ready())
                {
                    // read next line.
                    String s = in.readLine();
                    // split into its elements
                    String[] elems = s.split(" ");
                
                    // Name l‰nger als 2 Strings
                    if(elems.length != 2)
                    {
                        // do nothing
                    }
                    else                
                    {
                        NameList.add(new Name(elems[0], elems[1]));
                        ary_laenge++;
                    }

                } //while(in.ready())
            } // try

            // exception handler. execution flow jumps here if bad things happen.
            catch(Exception e)
            {
                System.err.println("Fehler beim Einlesen der Namensliste :-");
                System.err.println(e.toString());
                System.exit(-1);
            }

            //Zufallsnamen erstellen

            //Vorname
            int zufall = rn.nextInt(ary_laenge);
			String tmp = NameList.get(zufall);		//!!hier soll der vorname mit dem index zufall ausgegeben werden!!
            System.out.print(tmp.GetVorname); // ersten Vornamen ausgeben
            if( (zufall % 3)==0 ) //Doppelname
            {
                zufall = rn.nextInt(ary_laenge);
                //System.out.print(NameList[zufall].GetVorname()); //zweiten Vornamen ausgeben
            }

            //Nachname
            zufall = rn.nextInt(ary_laenge);
            //System.out.print(NameList[zufall].GetNachname()); //Nachnamen ausgeben

        } //else if ( args.length == 1 )

        else // Ung¸ltige Parameteranzahl
        {
                System.err.println("Du machst etwas falsch!");
                System.exit(-1);
        }
    } //public static void main(String[] args)
}
 
Hi,

ersten brauchst du das Attribut ary_laenge nicht, mit NameList.size() bekommst du die Anzahl der Elemente in der Liste.

Mit dem NameList.get(zufall) bekommst du auch keinen String zurueck sondern dein Objekt name, oder fuegst du der Liste nur Strings hinzu?

Wenn du der Liste das Objekt Name hinzufuegst, dann musst du das so machen:
Name tmp = (Name)NameList.get(zufall);
System.out.println(tmp.GetVorname());

Ach ja bitte schreib Attributnamen immer klein also nameList und nicht NameList. Sonst weiss niemand mehr ob es nun dein Objekt oder deine Klasse ist.
 
besten dank jetzt klappts. Hatte es schon fast gehabt. Nur ohne (Name). hab es mal so probiert Name tmp = NameList.get(zufall); was bewirkt das (Name) denn?
 
Zurück