Zugriff auf Arrayinhalt

Status
Nicht offen für weitere Antworten.

Chilene

Mitglied
Hallo!
Also, wir programmieren grade ein Programm für die Bundesjugendspiele in unserem Informatikkurs und ich bin für den Bereich GUI zuständig. In dem "provisorischem" Programm was ich hier habe gibt es 3 Klassen: Fenster, Schueler und Riege. Mein Problem ist jetzt, dass ich nicht genau weiß wie die Klassen Schueler und Riege entstanden sind und ich folglich auch nicht weiß wie das Array aufgebaut ist bzw. was da überhaupt passiert. Ich stelle mir das zumindest so vor, dass in der Klasse Riege ein Array aus Schuelern vorhanden ist. Kommen wir zu meinem eigentlich Problem....
Im Fenster gibt es 3 Textfelder mit Vorname, Name und Klasse und die sollen mit dem ersten Schueler aus der Riege gefüllt werden. Das dachte ich mir dann so:
Code:
schuelerVorname.setText(riege[0].getStringVorname);
        schuelerName.setText(riege[0].getStringName);
        schuelerKlasse.setText(riege[0].getIntKlasse);
Das klappt aber nicht, weil immer die Fehlermeldung kommt: "array required, but Riege found" und wenn ich es genauer anzeigen lasse: "You are using syntax here that suggests that you are trying to access an array element. The variable you refer to is not an array, though"!
Kann mir das mal einer erklären? Die Fehlermeldung hatte ich noch nie und versteh nicht was an meinem Code falsch ist. Danke!

P.S. Wenn benötigt kann ich ja den Quellcode der Klassen posten! 😉


Edit:
Hier mal der Code der Klasse Riege:

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


public class Riege extends ArrayList
{
    
  
    /**
     * Constructor for objects of class Kurs
     */
    Riege()
    { super();
        
        }
    
    public String toString()
    {
        String s=new String();
        for(int i=0;i<this.size();i++)
        {
            s = s + this.get(i).toString() +"\n";
        }
        
        return s;
    }
    
     void importieren(java.awt.FileDialog openFileDialog ) throws IOException,EOFException
        { int n=0;
          int j=0;
          int[] buffer;
          byte[] buf;
          
         RandomAccessFile f = null;

        f = new RandomAccessFile(openFileDialog.getDirectory()+"/"+openFileDialog.getFile(),"rw");
        if ( f!=null )
        { n=(int) f.length();
          j=n/84;
          buffer = new int[n];
          buf=new byte[n];
          for (int i=0; i<n; i++) 
            {
            	buffer[i]=f.read();
            	buf[i]=(byte)buffer[i];
            	//System.out.println("i:"+i+"/"+buffer[i]+": "+(char)buffer[i]);	
            }
          for(int k=0;k<j;k++)
             {
                
              String name=new String(buf,k*84+1,buf[k*84]);
              String vorname=new String(buf,k*84+28+1,buf[k*84+28]);
              byte kla =buf[k*84+28+28];
              //String klasse=(new Integer(kla)).toString();
              int klasse=(int)kla;
              //String klassenindex=new String(buf,k*84+28+28+3,1);
              char klassenindex=(char)buf[k*84+28+28+3];
              byte a =buf[k*84+28+28+4];
              //String alter=(new Integer(a)).toString();
              int alter=(int)buf[k*84+28+28+4] ;
              byte ge=buf[k*84+28+28+4+1];
              int geschlecht=(int)buf[k*84+28+28+4+1];
              
              
              //System.out.println("name: "+name+" vorname:"+vorname+" klasse: "+klasse+" klassenindex: "+klassenindex+" alter: "+alter+" geschlecht: "+geschlecht);
                  add( new Schueler(name,vorname,klasse,klassenindex,alter,geschlecht)); 
                 }  
            
         }
         
         f.close();
          
          }
          
     void laden(java.awt.FileDialog openFileDialog ) throws IOException,EOFException
        {ObjectInputStream ois;
         FileInputStream f = null;

        f = new FileInputStream(openFileDialog.getDirectory()+"/"+openFileDialog.getFile());
        if ( f!=null )
        {
        ois=new ObjectInputStream(f);
        { try {
            while (true) 
            { 
          try { 
                  
           add((Schueler)ois.readObject());
          	
          	  }
          	   catch (ClassNotFoundException e) {System.out.println("ClassNotFoundException");}
                
                 }     
             } catch (EOFException e) { f.close();   return;}
           } 
         }
         
         f.close();
          
          }
          

    
    void speichern( java.awt.FileDialog saveFileDialog) throws IOException
    { ObjectOutputStream oos;
    
        FileOutputStream f = null;
        f = new FileOutputStream(saveFileDialog.getDirectory()+"/"+ saveFileDialog.getFile());
        if ( f!=null )
        {   	
       oos=new ObjectOutputStream(f);
           if ( oos!=null ){
           for (int i=0; i<this.size(); i++) 
             {
            System.out.println(this.get(i).toString());
          	oos.writeObject(this.get(i));
             }
             oos.flush();
        }
		}
         f.close();  // close and free up system resource.
    }
    
    
    
    
    
   
}
 
Dann kommt noch der Fenster-Code:

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

public class Fenster extends Frame implements ActionListener
{
    
    
  
    private MenuBar mainMenuBar; //erstellt ein Auswahlmenu
    private Menu auswahl; //Menupunkt, um Programm zu beenden o.ä.
    private MenuItem miQuit;
    private MenuItem miLaden;
    private MenuItem miSpeichern;
    
    private FileDialog openFileDialog1;
    private FileDialog saveFileDialog1;
    
    private java.awt.Button anfangButton;
    private java.awt.Button endeButton;
    private java.awt.Button vorherigerButton;
    private java.awt.Button naechsterButton;
    
    public TextField eingabeFeld1, eingabeFeld2, eingabeFeld3;
    public Label eingabeLabel1, eingabeLabel2, eingabeLabel3;
    public Label schuelerLabel1, schuelerLabel2, schuelerLabel3;
    public TextField ausgabeFeld1, ausgabeFeld2, ausgabeFeld3;
    public TextField schuelerVorname, schuelerName, schuelerKlasse;
    
    private Riege riege;
 
    
   
    public Fenster(String eingabe) 
    {
        Frame neu = new Frame();
        
        setLayout(null);
        setTitle(eingabe);
        setSize(1000,800);
        setVisible(true);
        
        mainMenuBar = new MenuBar();
        auswahl = new Menu("Datei");
        miQuit = new MenuItem("Beenden");
        miLaden = new MenuItem("Laden");
        miSpeichern = new MenuItem("Speichern");
        
        auswahl.add(miQuit).setEnabled(true);
        miQuit.addActionListener(this);
        mainMenuBar.add(auswahl);
        setMenuBar(mainMenuBar);
        
        auswahl.add(miLaden).setEnabled(true);
        miLaden.addActionListener(this);
 
        auswahl.add(miSpeichern).setEnabled(true);
        miSpeichern.addActionListener(this);
  
        
        anfangButton = new Button("<<");
        anfangButton.setBounds(110,250,50,20);
        add(anfangButton);
        anfangButton.addActionListener(this);
        
        endeButton = new Button(">>");
        endeButton.setBounds(290,250,50,20);
        add(endeButton);
        endeButton.addActionListener(this);
        
        vorherigerButton = new Button("<");
        vorherigerButton.setBounds(170,250,50,20);
        add(vorherigerButton);
        vorherigerButton.addActionListener(this);
        
        naechsterButton = new Button(">");
        naechsterButton.setBounds(230,250,50,20);
        add(naechsterButton);
        naechsterButton.addActionListener(this);
        
        eingabeLabel1 = new Label("Wurf");
        eingabeLabel1.setBounds(110,100,50,20);
        add(eingabeLabel1);
        
        eingabeFeld1 = new TextField();
        eingabeFeld1.setBounds(210,100,130,20);
        eingabeFeld1.setText("");
        eingabeFeld1.setEditable(true);
        add(eingabeFeld1);
        eingabeFeld1.addFocusListener(new MyFocusListener());
        
        eingabeLabel2 = new Label("Sprung");
        eingabeLabel2.setBounds(110,150,50,20);
        add(eingabeLabel2);
        
        eingabeFeld2 = new TextField();
        eingabeFeld2.setBounds(210,150,130,20);
        eingabeFeld2.setText("");
        eingabeFeld2.setEditable(true);
        add(eingabeFeld2);
        eingabeFeld2.addFocusListener(new MyFocusListener());
        
        eingabeLabel3 = new Label("Lauf");
        eingabeLabel3.setBounds(110,200,50,20);
        add(eingabeLabel3);
        
        eingabeFeld3 = new TextField();
        eingabeFeld3.setBounds(210,200,130,20);
        eingabeFeld3.setText("");
        eingabeFeld3.setEditable(true);
        add(eingabeFeld3);
        eingabeFeld3.addFocusListener(new MyFocusListener());
        
    
        
        ausgabeFeld1 = new TextField();
        ausgabeFeld1.setBounds(350,100,130,20);
        ausgabeFeld1.setText("");
        ausgabeFeld1.setEditable(true);
        add(ausgabeFeld1);
        
        ausgabeFeld2 = new TextField();
        ausgabeFeld2.setBounds(350,150,130,20);
        ausgabeFeld2.setText("");
        ausgabeFeld2.setEditable(true);
        add(ausgabeFeld2);
        
        ausgabeFeld3 = new TextField();
        ausgabeFeld3.setBounds(350,200,130,20);
        ausgabeFeld3.setText("");
        ausgabeFeld3.setEditable(true);
        add(ausgabeFeld3);
        
        schuelerLabel1 = new Label("Vorname");
        schuelerLabel1.setBounds(550,100,60,20);
        add(schuelerLabel1);
        
        schuelerVorname = new TextField();
        schuelerVorname.setBounds(650,100,130,20);
        schuelerVorname.setText("");
        schuelerVorname.setEditable(true);
        add(schuelerVorname);
        
        schuelerLabel2 = new Label("Name");
        schuelerLabel2.setBounds(550,150,60,20);
        add(schuelerLabel2);
        
        schuelerName = new TextField();
        schuelerName.setBounds(650,150,130,20);
        schuelerName.setText("");
        schuelerName.setEditable(true);
        add(schuelerName);
        
        schuelerLabel3 = new Label("Klasse");
        schuelerLabel3.setBounds(550,200,60,20);
        add(schuelerLabel3);
        
        schuelerKlasse = new TextField();
        schuelerKlasse.setBounds(650,200,130,20);
        schuelerKlasse.setText("");
        schuelerKlasse.setEditable(true);
        add(schuelerKlasse);
        
        
        openFileDialog1 = new java.awt.FileDialog(this);
        openFileDialog1.setMode(FileDialog.LOAD);
        openFileDialog1.setTitle("…ffnen");
        //$$ openFileDialog1.move(40,280);
        saveFileDialog1 = new java.awt.FileDialog(this);
        saveFileDialog1.setMode(FileDialog.SAVE);
        saveFileDialog1.setTitle("Save");
        
        riege = new Riege();
        
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
    }
    
    public void paint(Graphics g)
        {
            Color fensterhintergrund = new Color(235,23,35);
            g.setColor(fensterhintergrund);
            g.fillRect(0,0, 1000, 800);
        }
    
    public void actionPerformed(java.awt.event.ActionEvent e) 
    {
        Object object = e.getSource();
        if (object == anfangButton)
        {
            System.out.println("Ich bin es!");
        }
        if (e.getActionCommand().equals(miQuit.getActionCommand()))
        {
            System.exit(0);
        }
         if (e.getActionCommand().equals(miLaden.getActionCommand()))
        {
            miOpen_Action(e);
        }
        
         if (e.getActionCommand().equals(miSpeichern.getActionCommand()))
        {
            miSave_Action(e);
        }
    }
    
      void miOpen_Action(java.awt.event.ActionEvent event)
    {
        //{{CONNECTION
        // Action from Open... Show the OpenFileDialog
        int     defMode         = openFileDialog1.getMode();
        String  defTitle        = openFileDialog1.getTitle();
        String defDirectory = openFileDialog1.getDirectory();
        String defFile          = openFileDialog1.getFile();
        openFileDialog1 = new java.awt.FileDialog(this, defTitle, defMode);
        openFileDialog1.setDirectory(defDirectory);
        openFileDialog1.setFile(defFile);
        openFileDialog1.show();
        try {riege.laden(openFileDialog1 );
        } 
        catch (IOException e) {;}
        //}}
        System.out.println(riege.size());
        
        schuelerVorname.setText(riege[0].getStringVorname);
        schuelerName.setText(riege[0].getStringName);
        schuelerKlasse.setText(riege[0].getIntKlasse);
        
    }
    
    void miSave_Action(java.awt.event.ActionEvent event)
    {
        // to do: code goes here.
             
        //{{CONNECTION
        // Show the SaveFileDialog
        int     defMode         = saveFileDialog1.getMode();
        String  defTitle        = saveFileDialog1.getTitle();
        String defDirectory = saveFileDialog1.getDirectory();
        String defFile          = saveFileDialog1.getFile();

        saveFileDialog1 = new java.awt.FileDialog(this, defTitle, defMode);
        saveFileDialog1.setDirectory(defDirectory);
        saveFileDialog1.setFile(defFile);
        saveFileDialog1.show();
        try { riege.speichern(saveFileDialog1);} catch (IOException e) { return ;}  
        //}}
    }
    
    public class MyFocusListener extends FocusAdapter {
        public void focusGained(FocusEvent evt) {
            // The component gained the focus
             Object object = evt.getSource();
            if (object ==  eingabeFeld1)
            ausgabeFeld1.setText(" ");
             if (object ==  eingabeFeld2)
            ausgabeFeld2.setText(" ");
             if (object ==  eingabeFeld3)
            ausgabeFeld3.setText(" ");
        }
        public void focusLost(FocusEvent evt) {
            // The component lost the focus
              Object object = evt.getSource();
           if (object ==  eingabeFeld1)
            ausgabeFeld1.setText(eingabeFeld1.getText());
             if (object ==  eingabeFeld2)
            ausgabeFeld2.setText(eingabeFeld2.getText());
             if (object ==  eingabeFeld3)
            ausgabeFeld3.setText(eingabeFeld3.getText());
        }
    }

    
    public static void main (String [] args) //Main-Methode zum Testen der Klasse
    {
        new Fenster("Bundesjugendspiele");
    }
     
}

Man muss dazu sagen, dass das alte BuJuSpiele Prog auf Basic oder Pascal basierte und die Dateien erst Importiert werden in Riege.
 
und noch der Schueler Code:

Code:
import java.io.*;

public class Schueler implements Serializable
{
    private int    intPWerfen  ;
    private int    intPLaufen ;
    private int    intPSpringen ;
    private int    intPGesamt ;
    private int    intTUrkunde ;
    
    private float floatWerfen ;
    private float floatLaufen ;
    private float floatSpringen ;
    
    private String stringName="";
    private String stringVorname="";
    private int    intAlter=0;
    
    private boolean boolTeilgenommen ;
    private char charKlassenIndex  ;
    private int intGeschlecht ;
    private int intKlasse ;
    
    public Schueler() {
    }
    
    public Schueler(String name, String vorname, int klasse,char klassenindex,int alter,int geschlecht)
	{
		// initialise instance variables
		this.stringName = name;
		this.stringVorname = vorname;
		this.intKlasse = klasse;
		this.charKlassenIndex = klassenindex;
		this.intAlter = alter;
		this.intGeschlecht = geschlecht;
	
		
		
	}
    
    /** Getter for property boolTeilgenommen.
     * @return Value of property boolTeilgenommen.
     *
     */
    public boolean isBoolTeilgenommen() {
        return boolTeilgenommen;
    }
    
    /** Setter for property boolTeilgenommen.
     * @param boolTeilgenommen New value of property boolTeilgenommen.
     *
     */
    public void setBoolTeilgenommen(boolean boolTeilgenommen) {
        this.boolTeilgenommen = boolTeilgenommen;
    }
    
    /** Getter for property charKlassenIndex.
     * @return Value of property charKlassenIndex.
     *
     */
    public char getCharKlassenIndex() {
        return charKlassenIndex;
    }
    
    /** Setter for property charKlassenIndex.
     * @param charKlassenIndex New value of property charKlassenIndex.
     *
     */
    public void setCharKlassenIndex(char charKlassenIndex) {
        this.charKlassenIndex = charKlassenIndex;
    }
    
    /** Getter for property floatLaufen.
     * @return Value of property floatLaufen.
     *
     */
    public float getFloatLaufen() {
        return floatLaufen;
    }
    
    /** Setter for property floatLaufen.
     * @param floatLaufen New value of property floatLaufen.
     *
     */
    public void setFloatLaufen(float floatLaufen) {
        this.floatLaufen = floatLaufen;
    }
    
    /** Getter for property floatSpringen.
     * @return Value of property floatSpringen.
     *
     */
    public float getFloatSpringen() {
        return floatSpringen;
    }
    
    /** Setter for property floatSpringen.
     * @param floatSpringen New value of property floatSpringen.
     *
     */
    public void setFloatSpringen(float floatSpringen) {
        this.floatSpringen = floatSpringen;
    }
    
    /** Getter for property floatWerfen.
     * @return Value of property floatWerfen.
     *
     */
    public float getFloatWerfen() {
        return floatWerfen;
    }
    
    /** Setter for property floatWerfen.
     * @param floatWerfen New value of property floatWerfen.
     *
     */
    public void setFloatWerfen(float floatWerfen) {
        this.floatWerfen = floatWerfen;
    }
    
    /** Getter for property intAlter.
     * @return Value of property intAlter.
     *
     */
    public int getIntAlter() {
        return intAlter;
    }
    
    /** Setter for property intAlter.
     * @param intAlter New value of property intAlter.
     *
     */
    public void setIntAlter(int intAlter) {
        this.intAlter = intAlter;
    }
    
    /** Getter for property intGeschlecht.
     * @return Value of property intGeschlecht.
     *
     */
    public int getIntGeschlecht() {
        return intGeschlecht;
    }
    
    /** Setter for property intGeschlecht.
     * @param intGeschlecht New value of property intGeschlecht.
     *
     */
    public void setIntGeschlecht(int intGeschlecht) {
        this.intGeschlecht = intGeschlecht;
    }
    
    /** Getter for property intKlasse.
     * @return Value of property intKlasse.
     *
     */
    public int getIntKlasse() {
        return intKlasse;
    }
    
    /** Setter for property intKlasse.
     * @param intKlasse New value of property intKlasse.
     *
     */
    public void setIntKlasse(int intKlasse) {
        this.intKlasse = intKlasse;
    }
    
    /** Getter for property intPGesamt.
     * @return Value of property intPGesamt.
     *
     */
    public int getIntPGesamt() {
        return intPGesamt;
    }
    
    /** Setter for property intPGesamt.
     * @param intPGesamt New value of property intPGesamt.
     *
     */
    public void setIntPGesamt(int intPGesamt) {
        this.intPGesamt = intPGesamt;
    }
    
    /** Getter for property intPLaufen.
     * @return Value of property intPLaufen.
     *
     */
    public int getIntPLaufen() {
        return intPLaufen;
    }
    
    /** Setter for property intPLaufen.
     * @param intPLaufen New value of property intPLaufen.
     *
     */
    public void setIntPLaufen(int intPLaufen) {
        this.intPLaufen = intPLaufen;
    }
    
    /** Getter for property intPSpringen.
     * @return Value of property intPSpringen.
     *
     */
    public int getIntPSpringen() {
        return intPSpringen;
    }
    
    /** Setter for property intPSpringen.
     * @param intPSpringen New value of property intPSpringen.
     *
     */
    public void setIntPSpringen(int intPSpringen) {
        this.intPSpringen = intPSpringen;
    }
    
    /** Getter for property intPWerfen.
     * @return Value of property intPWerfen.
     *
     */
    public int getIntPWerfen() {
        return intPWerfen;
    }
    
    /** Setter for property intPWerfen.
     * @param intPWerfen New value of property intPWerfen.
     *
     */
    public void setIntPWerfen(int intPWerfen) {
        this.intPWerfen = intPWerfen;
    }
    
    /** Getter for property intTUrkunde.
     * @return Value of property intTUrkunde.
     *
     */
    public int getIntTUrkunde() {
        return intTUrkunde;
    }
    
    /** Setter for property intTUrkunde.
     * @param intTUrkunde New value of property intTUrkunde.
     *
     */
    public void setIntTUrkunde(int intTUrkunde) {
        this.intTUrkunde = intTUrkunde;
    }
    
    /** Getter for property stringName.
     * @return Value of property stringName.
     *
     */
    public java.lang.String getStringName() {
        return stringName;
    }
    
    /** Setter for property stringName.
     * @param stringName New value of property stringName.
     *
     */
    public void setStringName(java.lang.String stringName) {
        this.stringName = stringName;
    }
    
    /** Getter for property stringVorname.
     * @return Value of property stringVorname.
     *
     */
    public java.lang.String getStringVorname() {
        return stringVorname;
    }
    
    /** Setter for property stringVorname.
     * @param stringVorname New value of property stringVorname.
     *
     */
    public void setStringVorname(java.lang.String stringVorname) {
        this.stringVorname = stringVorname;
    }
    public String toString()
	{
	    String s = stringName +", "+ stringVorname +", " + intKlasse+", "+ charKlassenIndex+", "+ intAlter+", "+ intGeschlecht;
	    return s;
	}
    
}
 
hab nicht den ganzen code angeschaut, aber so viel ich gesehen habe erbt Riege von ArrayList, d.h. Riege ist kein Array.... und somit geht riege[0] nicht... muss heissen riege.get(0) usw.

das gibt aber dann ein Object zurueck - muss also erst noch yu Schueler gecastet werden...

PS: Warum erbt Riege von ArrayList ??? Mach lieber n private instanzvariable vom Typ ArrayList anstatt Vererbung !
 
Hey, schon mal Danke! 🙂
Ich hab keine Ahnung warum Riege von Arraylist erbt, den Code habe ich wie gesagt nicht geschrieben. Bin nur für Fenster verantwortlich! 😉
Ich gucke jetzt erst mal wie ich das mit dem "casten" hinbekomme, hab das nämlich noch nie gemacht! 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben