ArrayList einer anderen Klasse übergeben

Zappel22

Mitglied
Moin, bin gerade dabei Java zu lernen, nun komme ich aber nicht weiter.
Ich habe eine Classe in der eine Log Datei eingelesen wird und dann in einem ArrayList gespeichert wird.
Nun will ich eine zweite Klasse machen, in der ich dieses Array benutzen kann, nur weiß ich nicht wie ich das Array da rüber bekomme in die zweite Klasse, damit ich die da benutzen kann. Hab bisschen rum probiert mit Parameter usw.. aber nichts klappt. Kann mir da einer weiter helfen? Im Internet hab ich auch geguckt, aber ich finde nichts oder ich bin zu blöde das zu verstehen.

Klasse 1:

Java:
package Statistic;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Einlesen {

        public ArrayList<String> Einlesen(){
            BufferedReader input = null;
            try {
                input = new BufferedReader(new InputStreamReader(new FileInputStream("./docs/Log.log")));
            } catch (FileNotFoundException e) {
                System.out.println("Datei nicht gefunden! Bitte neue Einlesen.");
            }

            String  thisLine = null;
            ArrayList<String> LogListe = new ArrayList<String>();

            try {
                while ((thisLine = input.readLine()) != null) {            
                    LogListe.add(thisLine + "\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return LogListe;
    
        }

}

Klasse 2:

Java:
package Statistic;

import java.util.ArrayList;

public class Auswertung {
    Einlesen einlesen = new Einlesen();
}




Im Grunde will ich den Log in der zweiten Klasse dann auswerten und Statistiken daraus machen.
 
Zuletzt bearbeitet von einem Moderator:
Eine Lösung könnte so aussehen.
Java:
package Statistic;
import java.util.ArrayList;
 
public class Auswertung {
     Einlesen einlesen = new Einlesen();
 
     public void bearbeite () {
        ArrayList<String> liste = einlesen.Einlesen();
        // mache etwas mit der Liste.
     }
}

Allerdings muss ich sagen, dass deine Wahl, für die Klasse und die Methode den gleichen Namen zu wählen ("Einlesen"), eine sehr unglückliche ist.
Abgesehen von der Namenswahl sollten Methoden mit einem Kleinbuchstaben beginnen.
 
Oha hat echt geklappt, danke für die schnelle Antwort! Also muss man, wenn man was rüber tauscht, ihm wieder eine neue Variable geben und die Sachen da rein stecken ? oder wie soll man das verstehen xp?

Vielleicht finde ich ja noch was woran ich scheitere x)
 
Also muss man, wenn man was rüber tauscht, ihm wieder eine neue Variable geben und die Sachen da rein stecken ? oder wie soll man das verstehen xp?

Dazu muss man deine Aussage erstmals verstehen 😉
Was bedeutet "rüber tauschen"? Wer ist "ihm"? Was ist "da rein stecken"?
Versuche dich etwas mit den Java Begriffen vertraut zu machen, einerseits verstehst du dann leichter wenn dir jemand etwas versucht zu erklären.
Andereseits verstehen andere Programmierer dich ebenfalls einfacher.

Generell sollte man sagen: Werte können per Parameter übergeben bzw. Rückgabewerte empfangen werden. Natürlich sollte das ganze im logischen Rahmen bleiben.

PS: Du solltest "Einlesen" nicht als Klassenname verwenden. Klassen stellen Objekte dar, Methoden stellen "Tätigkeiten" dar.
Beispiel: Der "Datenleser" kann per "einlesen" die Daten aus einem File einlesen 😉
 
PS: Du solltest "Einlesen" nicht als Klassenname verwenden. Klassen stellen Objekte dar, Methoden stellen "Tätigkeiten" dar.
Beispiel: Der "Datenleser" kann per "einlesen" die Daten aus einem File einlesen 😉
An dieser Stelle möchte ich auch noch auf ein paar Sachen aufmerksam machen.
Mir ist klar: der Threadersteller ist gerade dabei Java zu lernen, allerdings möchte ich an der Stelle auf sinnvolle Aspekte hinweisen, die man beim Programmieren (meiner Meinung nach) beachten sollte.
Man sollte darauf achten, dass eine Methode nur EINE Aufgabe übernimmt. Fehlerbehandlung ist laut dem Buch "Clean Code" auch eine Aufgabe, man kann deinen Code dann wie folgt restrukturieren:
Java:
        public ArrayList<String> Einlesen(){
            BufferedReader input = null;
            try {
                input = new BufferedReader(new InputStreamReader(new FileInputStream("./docs/Log.log")));
           String  thisLine = null;
            ArrayList<String> LogListe = new ArrayList<String>();
             } catch (FileNotFoundException e) {
                System.out.println("Datei nicht gefunden! Bitte neue Einlesen.");
            }



            try {
                while ((thisLine = input.readLine()) != null) {          
                    LogListe.add(thisLine + "\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
  
            return LogListe;
  
        }
 
Java:
package Statistic;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Einlesen {

  public List<String> Einlesen(){
            List<String> logListe = new ArrayList<String>();
            try {
                 logListe = lese_daten_aus_datei();
           } catch (FileNotFoundException e) {
                     System.out.println("Datei nicht gefunden! Bitte neue Einlesen.");
             } catch (IOException e) {
                e.printStackTrace();
            }
             return LogListe;
            }
      private List<String> lese_daten_aus_datei() throws FileNotFoundException, IOException
        {
           List<String> data = new ArrayList<String>();
           String thisLine;
            Reader input = new BufferedReader( new InputStreamReader( new FileInputStream("./docs/Log.log")));
             while ((thisLine = ((BufferedReader)input).readLine()) != null) {
                        data.add(thisLine + "\n");
             }
             return data;
      }
}
Sorry dass ich den Code anhängen muss, aber ich hatte jetzt erst die Zeit den Post zu editieren, aber wegen der vergangenen Zeit ( Post älter als 30 Min) konnte ich das nicht mehr tun. Deswegen dieser Post.
EDIT:
Im vorigen Beitrag von mir sollte eigentlich noch stehen dass ich aus Versehen zu früh auf den Absende-Button gekommen bin und die Code-Darstellung in meinem Browser fehlerhaft war. Entschuldigung dafür. Ich möchte hier niemanden mit "Herumnörgeln" nerven, nur wäre ich froh gewesen, wenn ich direkt am Anfang ebenfalls auf solche Sachen hingewiesen worden wäre.
 
Tag

Ich hab hier nun eine Methode geschrieben, die Daten in eine Datei speichern soll. Nur weiß ich nicht wie ich die nun ganz einfach austesten soll, wenn die überhaupt so richtig geschrieben ist.

Code:
public void saveAs(String filename){

        FileWriter writer = null;   
       
        try
        {
          writer = new FileWriter(filename);
          writer.write(filename);
        }catch ( IOException e ) {
          System.err.println( "Konnte Datei nicht erstellen" );
        }
       
    }
 
Manuell:
Klasse mit Main-Methode erstellen, Methode aufrufen und irgendeine Datei erstellen und befüllen lassen.
Datei öffnen und reinschauen.

Automatisiert:
JUnit-Test erstellen: Datei erstellen, befüllen, öffnen und tatsächlichen Inhalt mit dem erwarteten vergleichen.
 

Zurück
Oben