Fehlermeldung bei split-Methode

JavaClara

JavaClara

Mitglied
Hallo liebe Community,

ich muss für ein Modul an der Uni einen Einkaufszettel erstellen.

Dazu möchte ich gern eine Methode implementieren, die meine String-Einträge nach Komma aufteilt und in das bestehende Array hinzufügt. Ich habe bereits ein Objekt namens "Eintrag" erstellt, dies soll für die Einträge in dem Einkaufszettel stehen. Die Klasse heißt "Einkaufszettel". Warum wird die Methode split() nicht richtig erkannt? Seit ich als Objekttyp das Objekt "Eintrag" verwende, kommt immer bei "split" eine Fehlermeldung (cannot find symbol - method split(java.lang.String)).

Das ist der Quelltext mit Fehlermeldung:

Java:
public void mehrereEintraegeHinzufuegen()
    {
        Eintrag eintrag = new Eintrag();
        Eintrag[] wortArray = eintrag.split(", ");
        for(Eintrag wort : wortArray) {
            eintraege.add(wort);
        }
    }

Vielen Dank für eure Hilfe!

Beste Grüße
 
Zuletzt bearbeitet von einem Moderator:
MoxxiManagarm

MoxxiManagarm

Top Contributor
split ist eine Methode von String. Wie kommst du darauf, dass Eintrag diese Methode besitzt? Du kannst Eintrag aber natürlich die split Methode "beibringen"
 
JavaClara

JavaClara

Mitglied
Ich möchte gern ein Element der Klasse Eintrag erzeugen und dieses neue Objekt Eintrag (ist ein String) dann an die ArrayList übergeben.
Sozusagen wenn der neue Eintrag "Brot, Milch, Butter" ist, sollte dann an das Array übergeben werden: "Brot", "Milch" und "Butter".
 
L

LimDul

Top Contributor
Ich möchte gern ein Element der Klasse Eintrag erzeugen und dieses neue Objekt Eintrag (ist ein String) dann an die ArrayList übergeben.
Sozusagen wenn der neue Eintrag "Brot, Milch, Butter" ist, sollte dann an das Array übergeben werden: "Brot", "Milch" und "Butter".
Eintrag ist kein String. Eintrag ist vom Typ Eintrag. Das hat vielleicht ein String als Feld, aber es ist kein String.

Du musst die Methode split auf dem Feld aufrufen, entweder indem du das Feld dir per getter zurückgeben lässt oder in dem du in der Klasse eintrag die Methode split implementierst, die auf dem Feld dann split aufruft und das Ergebnis zurückgibt
 
kneitzel

kneitzel

Top Contributor
Bitte bei den Worten, die Du verwendest, immer aufpassen.

Du hast eine Klasse Eintrag. Und wenn Du sagst, dass diese ein String ist, dann erbt Eintrag von String?
Was genau für ein Verhalten hat Eintrag, so dass Du hier eine eigene Klasse hast? Wenn Eintrag einfach nur ein String ist, dann macht es ggf. Sinn, auf die Klasse Eintrag zu verzichten.

Wenn man eine Klasse Eintrag haben möchte, dann ist das Verhalten und so aber gut zu definieren. Und dann ist es eben kein String. Und dann ist "Brot, Milch, Butter" evtl. auch nicht ein Eintrag sondern eine String Representation von etwas, das mehrere Einträge enthält.

Also Dann hast Du evtl. sowas:
Java:
public class Eintrag {
    private String bezeichnung;
    // Getter / Setter für bezeichnung soweit notwendig.
    
    public Eintrag(final String bezeichnung) {
        this.bezeichnung = bezeichnung;
    }
    
    public static Eintrag[] parseEintraege(final String eintraege) {
        // Split und erstellung eines Arrays von Eintrag Instanzen, die dann zurück gegeben werden.
    }
}

Das nur als kleine Skizzierung, wie man das dann machen könnte. Aber wichtig: Eintrag ist dann kein String. Auf Eintrag kann man keinen Split ausführen. Ein Eintrag wird auch nicht gesplittet, ... eine statische Methode kann einen String parsen und dabei mehrere Einträge erstellen, aber das ist was anderes. Statt dem Konstruktor mit dem String Parameter ist auch eine static Eintrag parseEintrag(...) Methode denkbar ...
 
kneitzel

kneitzel

Top Contributor
Das wird schwer bei der final class String :D
Jo, aber das wird er ja (hoffentlich) auch nicht gewollt haben. Mir ging es da um das Wording. "Klasse A ist ein Klasse B" -> Dann ist das ein Wording für eine Vererbung. Daher wollte ich einfach mal dumm fragen ... vielleicht hat er es ja irgendwie geschafft, von String was abzuleiten :)
 
JavaClara

JavaClara

Mitglied
Eintrag ist kein String. Eintrag ist vom Typ Eintrag. Das hat vielleicht ein String als Feld, aber es ist kein String.

Du musst die Methode split auf dem Feld aufrufen, entweder indem du das Feld dir per getter zurückgeben lässt oder in dem du in der Klasse eintrag die Methode split implementierst, die auf dem Feld dann split aufruft und das Ergebnis zurückgibt
okay, das heißt also, ich könnte diese Methode auch einfach in meiner anderen Klasse "Eintrag" implementieren?
 
JavaClara

JavaClara

Mitglied
Bitte bei den Worten, die Du verwendest, immer aufpassen.

Du hast eine Klasse Eintrag. Und wenn Du sagst, dass diese ein String ist, dann erbt Eintrag von String?
Was genau für ein Verhalten hat Eintrag, so dass Du hier eine eigene Klasse hast? Wenn Eintrag einfach nur ein String ist, dann macht es ggf. Sinn, auf die Klasse Eintrag zu verzichten.

Wenn man eine Klasse Eintrag haben möchte, dann ist das Verhalten und so aber gut zu definieren. Und dann ist es eben kein String. Und dann ist "Brot, Milch, Butter" evtl. auch nicht ein Eintrag sondern eine String Representation von etwas, das mehrere Einträge enthält.

Also Dann hast Du evtl. sowas:
Java:
public class Eintrag {
    private String bezeichnung;
    // Getter / Setter für bezeichnung soweit notwendig.
   
    public Eintrag(final String bezeichnung) {
        this.bezeichnung = bezeichnung;
    }
   
    public static Eintrag[] parseEintraege(final String eintraege) {
        // Split und erstellung eines Arrays von Eintrag Instanzen, die dann zurück gegeben werden.
    }
}

Das nur als kleine Skizzierung, wie man das dann machen könnte. Aber wichtig: Eintrag ist dann kein String. Auf Eintrag kann man keinen Split ausführen. Ein Eintrag wird auch nicht gesplittet, ... eine statische Methode kann einen String parsen und dabei mehrere Einträge erstellen, aber das ist was anderes. Statt dem Konstruktor mit dem String Parameter ist auch eine static Eintrag parseEintrag(...) Methode denkbar ...
Super vielen Dank, das probiere ich mal aus!
 
kneitzel

kneitzel

Top Contributor
okay, das heißt also, ich könnte diese Methode auch einfach in meiner anderen Klasse "Eintrag" implementieren?
Die Frage ist doch, was in Deinen Augen ein Eintrag sein soll. Wenn Du objektorientiert arbeitest, dann solltest Du Funktionalität immer so implementieren, dass diese
a) an der richtigen Stelle ist und
b) es sinnvoll scheint.

Wenn "Apfel, Birne, Milch" ein Eintrag sein kann, dann kann es evtl. Sinn machen, sowas splitten zu können.
Aber für mich sieht es erst einmal so aus, als sei das nur eine Text-Darstellung von einer Liste von Einträgen. Dann wären es 3 Einträge. Und dann macht es keinen Sinn, den Eintrag zu splitten...

Aber sehr wohl brauchst du ja noch eine Möglichkeit, um aus dem String die entsprechenden Einträge zu machen. Da sehe ich zwei Ansätze:
a) Man könnte es als eine parse Methode bauen, wie ich bereits erläutert habe. Dies ist in so kleinen Projekten durchaus nicht unüblich, aber das wird so eher selten gemacht. Man lässt sowas eher außerhalb der Klasse, denn es kann viele Möglichkeiten geben, wie sowas übertragen / gespeichert wird ...
b) Daher gibt es dann oft Data Transfer Objects / Klassen. Dann hättest Du evtl. eine ElementDTO Klasse, die so einfache String Listen zu eine Liste von Elementen machen kann. Oder du hast andere ElementDTO Klassen, die Elemente aus einer Datenbank lesen oder aus einem XML File oder oder oder .... Das ist aber etwas, das für Dich jetzt wohl deutlich zu früh kommt. Aber ich will es schon einmal erwähnen in der Hoffnung, dass ich dich damit nicht zu sehr verwirre.
 
JavaClara

JavaClara

Mitglied
Die split-Methode funktioniert mit dem Typ String, aber was mir aufgefallen ist - ein neuer Eintrag wird nicht über die andere Klasse erzeugt.

Mein Code sieht also so aus:

public void eintragHinzufuegen()
{
eintrag = new Eintrag(); // -> Zeile funktioniert nicht
eintraege.add(eintrag);
}

und komischerweise wird mir immer in der ersten Zeile der Methode eine Fehlermeldung angezeigt, dass die Variable "eintrag" nicht gefunden werden kann und der Konstruktor bei Eintrag nicht an die gegebenen Typen angepasst werden könnte.

Ich möchte über diese Zeile lediglich einen neuen Eintrag erstellen, der dann in die ArrayList aufgenommen wird.
Der Eintrag soll eine Bezeichnung und eine Mengenangabe beinhalten. Zum Beispiel "Apfel, 3"

Momentan sieht meine Klasse "Eintrag" so aus:

public class Eintrag
{
// Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
private String name;
private String menge;
/**
* Konstruktor für Objekte der Klasse Eintrag
*/
public Eintrag(final String name, String menge)
{
// Instanzvariable initialisieren
this.name = name;
this.menge = menge;
}

Hat jemand eine Idee, wie ich die Zeile anpassen kann oder gegebenenfalls die Klasse "Eintrag" ändern kann?

Danke schonmal für eure Hilfe bei meiner neuen "Baustelle".
 
temi

temi

Top Contributor
Java:
public class Eintrag {
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private String name;
    private String menge;

    /**
    * Konstruktor für Objekte der Klasse Eintrag
    */
    public Eintrag(final String name, String menge) { // hier werden zwei Parameter deklariert!
        // Instanzvariable initialisieren
        this.name = name;
        this.menge = menge;
    }
}
Der Konstruktor der Klasse Eintrag erfordert die Angabe von zwei String-Parametern. Ein Aufruf mit new Eintrag() kann gar nicht funktionieren, weil die Parameter fehlen.

Ist der Datentyp String wirklich sinnvoll, wenn man eine Menge angeben möchte? Aber möglicherweise ist das so vorgegeben...

Die Methode "eintragHinzufuegen()" sollte allerdings auch wenigstens einen Parameter haben. Woher soll sie sonst wissen welchen Eintrag sie hinzufügen soll. Möglich und sinnvoll wären hier:
Java:
void eintragHinzufuegen(String name, String menge) // ich lass die Menge mal als String so stehen
    
// oder
    
void eintragHinzufuegen(Eintrag eintrag)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
C Fehlermeldung InOut. Java Basics - Anfänger-Themen 7
B Methoden if-statement error, FX, Fehlermeldung Java Basics - Anfänger-Themen 6
A Fehlermeldung Java Basics - Anfänger-Themen 5
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
M Java heap space Fehlermeldung beheben Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
H fehlermeldung Java Basics - Anfänger-Themen 447
H fehlermeldung Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Fehlermeldung mit Intger. Java Basics - Anfänger-Themen 3
A Fehlermeldung Java Basics - Anfänger-Themen 3
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
H Fehlermeldung bei der Ausführung eines Compilierten PRGs Java Basics - Anfänger-Themen 9
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
x-tshainge Fehlermeldung Java Basics - Anfänger-Themen 2
M Erste Schritte NetBeans Fehlermeldung Java Basics - Anfänger-Themen 2
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
N Fehlermeldung bei Methode Java Basics - Anfänger-Themen 12
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
M Minecraft Plugin Fehlermeldung! Java Basics - Anfänger-Themen 2
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
A checkstyle Fehlermeldung Java Basics - Anfänger-Themen 1
M Minecraft Plugin Fehlermeldung Java Basics - Anfänger-Themen 13
G Compiler-Fehler Fehlermeldung Java Basics - Anfänger-Themen 3
Pr0m3theus Fehlermeldung ArrayList add Java Basics - Anfänger-Themen 12
Arabicabohne Fehlermeldung bei Eclipse Java Basics - Anfänger-Themen 23
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
TheMenox Fehlermeldung / Arrays, Enhanced For Loops Java Basics - Anfänger-Themen 16
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
Henri Fehlermeldung Java Basics - Anfänger-Themen 2
K Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
J Bug? Seltsame Fehlermeldung Java Basics - Anfänger-Themen 7
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
J while(nst == 0) gibt Fehlermeldung Java Basics - Anfänger-Themen 4
L Fehlermeldung Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
J Launcher Fehlermeldung Java Basics - Anfänger-Themen 0
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
H Compiler-Fehler Fehlermeldung Kompilier Java Basics - Anfänger-Themen 4
A Fehlermeldung Unklar. Java Basics - Anfänger-Themen 1
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
D Fehlermeldung beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 4
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
A Compiler-Fehler Fehlermeldung auf Mac Java Basics - Anfänger-Themen 3
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
N Fehlermeldung nicht nachvollziehbar Java Basics - Anfänger-Themen 5
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
C addActionListener(this) - Fehlermeldung Java Basics - Anfänger-Themen 8
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
C GUI - SWT - Button-Fehlermeldung Java Basics - Anfänger-Themen 5
F Input/Output IOTools Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 16
K Erste Schritte Datei gelöscht - nun Fehlermeldung Java Basics - Anfänger-Themen 2
S Fehlermeldung Java Basics - Anfänger-Themen 8
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
E Fehlermeldung Java Basics - Anfänger-Themen 13
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
J Fehlermeldung reagieren Java Basics - Anfänger-Themen 10
F Array Fehlermeldung... Java Basics - Anfänger-Themen 2
B Fehlermeldung bei Klasse mit array Java Basics - Anfänger-Themen 3
L Erste Schritte Fehlermeldung bei Array-Programm Java Basics - Anfänger-Themen 4
G Fehlermeldung: A fatal error has been detected by the Java Runtime Environment Java Basics - Anfänger-Themen 7
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
K Fehlermeldung nach editor installation Java Basics - Anfänger-Themen 3
P Input/Output JOptionPane Fehlermeldung Catchen Java Basics - Anfänger-Themen 5
J Erste Schritte System.out.print (Fehlermeldung) Java Basics - Anfänger-Themen 14
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
B Java-Basics --> Fehlermeldung nicht verständlich! Java Basics - Anfänger-Themen 8
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
C Umgebungsvariable import anweisung gibt fehlermeldung Java Basics - Anfänger-Themen 2
B RMI - Fehlermeldung auf dem Client Java Basics - Anfänger-Themen 6
E Fehlermeldung: variable wird nicht initalisiert obwohl sie deklariert ist Java Basics - Anfänger-Themen 9
N Erste Schritte import javax.media.3d....; //Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 10
G Compiler-Fehler Fehlermeldung nach "Run" Java Basics - Anfänger-Themen 12
C Jar-Fehlermeldung Java Basics - Anfänger-Themen 15
C Fehlermeldung Java Basics - Anfänger-Themen 12
K Fehlermeldung beim kompilieren Java Basics - Anfänger-Themen 8
M Weder Consolenausgabe noch Fehlermeldung! Java Basics - Anfänger-Themen 5
O Erste Schritte Mir nichts Sagende Fehlermeldung Java Basics - Anfänger-Themen 7
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
J Fehlermeldung: Applet nicht initialisiert Java Basics - Anfänger-Themen 24
N Fehlermeldung Java Basics - Anfänger-Themen 11
W Fehlermeldung in eclipse Java Basics - Anfänger-Themen 10
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
K Fehlermeldung: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 Java Basics - Anfänger-Themen 4
T Hibernate Fehlermeldung Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Anzeige

Neue Themen


Oben