enum

anfeanger01

Mitglied
Hallo,

die Aufgabe ist, jeder Sendung einen InhaltsTypen zu geben.
Inhaltstypen haben einen Namen und geben an, ob die Ware flüssig ist, welcher Gefahrenklasse sie
angehört und welches Gewicht pro Standardeinheit sie mitbringt.
Ich habe einen gleichnamigen enum-Typ mit Konstanten und Zusatzinformationen versehen und Instanzvariablen, sowie der Konstruktor.


Ab SAFT bis ZACKEN wird mir "can not reference a field before it is defined“ angezeigt, sowie „The Constructor Gefahrenklasse.InhaltsTyp(Gefahrenklasse.InhaltsTyp, boolean, Gefahrenklasse, int) is undefined"

Ehrlich gesagt hab ich keine Ahnung wo der Fehler liegen könnte.

würde mir sehr über Tipps freuen. Danke schonmal.

Java:
package de.hsrm.mi.prog2.spedition.behaelter;

public enum Gefahrenklasse {

    HARMLOS,
    NERVIG,
    GEFAEHRLICH;
    
public enum InhaltsTyp {

    SAFT (SAFT, true, HARMLOS, 100),
    FARBE (FARBE, true, GEFAEHRLICH, 90),
    BENZIN (BENZIN, true, GEFAEHRLICH, 84),
    DRECK (DRECK, false, NERVIG, 120),
    PULVER (PULVER, false, HARMLOS, 80),
    HOLZ (HOLZ, false, HARMLOS, 105),
    SCHROTT (SCHROTT, false, NERVIG, 200),
    ZACKEN (ZACKEN, false, GEFAEHRLICH, 300);
    
    
    final String name;
    final boolean fluessig;
    final String gefahrenklasse;
    final int gewicht;
    
    
    private InhaltsTyp(String name, boolean fluessig, String gefahrenklasse, int gewicht) {
        this.name = name;
        this.fluessig = fluessig;
        this.gefahrenklasse = gefahrenklasse;
        this.gewicht = gewicht;
    }
    
    public boolean isFluessig() {
        return fluessig;   
    }

    public String getGefahrenklasse() {
        return gefahrenklasse;
    }
    
    public int getGewicht() {
        return gewicht;
        
    }

    public String getName() {
        return name;
    }
    
    
    
}
}
 

Robat

Top Contributor
1. Ich seh keinen Grund warum du InhaltsTyp in Gefahrenklassen deklarieren solltest
Java:
public enum Gefahrenklasse {
    ....
    public enum InhaltsTyp {
        ....
    }
}
wird zu
Java:
public enum Gefahrenklasse {
    ....
}
und
Java:
    public enum InhaltsTyp {
        ....
    }

2. Den Namen des Enums musst du nicht im Konstruktor übergeben. Du kannst die name() Methode benutzen
Java:
public enum InhaltsTyp {
    SAFT(true, HARMLOS, 100),
    ....
    InhaltsTyp(boolean fluessig, String gf, int gewicht) {
        this.name = name();
        ...
    }
}
3. Warum übergibst du die Gefahrenklasse als String? Du legst dir doch extra ein Enum dafür an
Java:
public enum InhaltsTyp {
    SAFT(true, Gefahrenklasse.HARMLOS, 100),
    ....
  
    final Gefahrenklasse gf;

    InhaltsTyp(boolean fluessig, Gefahrenklasse gf, int gewicht) {
        ...
    }
}
 

anfeanger01

Mitglied
hab es jetzt bisher so gelöst

Java:
package de.hsrm.mi.prog2.spedition.behaelter;

public enum InhaltsTyp {

    SAFT ("SAFT", true, Gefahrenklasse.HARMLOS, 100),
    FARBE ("FARBE", true, Gefahrenklasse.GEFAEHRLICH, 90),
    BENZIN ("BENZIN", true, Gefahrenklasse.GEFAEHRLICH, 84),
    DRECK ("DRECK", false, Gefahrenklasse.NERVIG, 120),
    PULVER ("PULVER", false, Gefahrenklasse.HARMLOS, 80),
    HOLZ ("HOLZ", false, Gefahrenklasse.HARMLOS, 105),
    SCHROTT ("SCHROTT", false, Gefahrenklasse.NERVIG, 200),
    ZACKEN ("ZACKEN", false, Gefahrenklasse.GEFAEHRLICH, 300);
    
    
    final String name;
    final boolean fluessig;
    final Gefahrenklasse gefahrenklasse;
    final int gewicht;
    
    
    private InhaltsTyp(String name, boolean fluessig, Gefahrenklasse gefahrenklasse, int gewicht) {
        this.name = name;
        this.fluessig = fluessig;
        this.gefahrenklasse = gefahrenklasse;
        this.gewicht = gewicht;
    }
    
    public boolean isFluessig() {
        return fluessig;   
    }

    public Gefahrenklasse getGefahrenklasse() {
        return gefahrenklasse;
    }
    
    public int getGewicht() {
        return gewicht;
        
    }
    
    public String toString() {
        
        return String.format("%s(%s, %s, %d)", name, fluessig, gefahrenklasse, gewicht);
    }

    
    
    public enum Gefahrenklasse {

        HARMLOS,
        NERVIG,
        GEFAEHRLICH;
        

    }
}

funktioniert auch, mein problem jetzt, ist nur, dass er mir den String so ausgibt
SAFT(true, HARMLOS, 100), es aber so sein müsste: SAFT(flüssig, HARMLOS, 100)

und danke!
 

Robat

Top Contributor
Naja fluessig ist nunmal ein boolean. Du musst eben sagen das wenn fluessig true ist soll "flüssig" ausgegeben werden, ansonsten "fest" (oder was auch immer
 

anfeanger01

Mitglied
Ich habs, vielen dank :) @mihe7

Weiter gehts mit

Außerdem passen bestimmte Inhaltstypen nicht zueinander und du ̈rfen entsprechend nicht zusammen gelagert werden. Es gelten folgende Regeln:

• Ein flu ̈ssiger Inhalt passt nur zum selben Inhaltstyp (also Saft zu Saft, aber nicht zu Benzin oder Schrott).
• Ein fester Inhalt passt nur zu festen Inhalten derselben Gefahrenklasse (also Holz zu Pulver, aber nicht zu Schrott (andere Gefahrenklasse) und nicht zu Farbe (da flüssig)).

Bitteschreiben Sie eine Methode boolean passtZu(InhaltsTyp t),mit der man fu ̈r eineI nhaltsTyp- Konstante pru ̈fen kann, ob sie zu einer anderen passt (nicht abtippen; JUnit-Tests hierzu finden Sie inA2 c ...). Verwendungsbeispiel:

boolean erg1 = InhaltsTyp.SAFT.passtZu(InhaltsTyp.BENZIN); // false
boolean erg2 = InhaltsTyp.PULVER.passtZu(InhaltsTyp.HOLZ); // true
boolean erg3 = InhaltsTyp.HOLZ.passtZu(InhaltsTyp.SCHROTT); // false

Wie vergleiche ich denn Enums miteinander?

Hab bisher:

Java:
    public boolean passtZu(InhaltsTyp t) {
         if(t.fluessig == t.fluessig) {
            return false;
        }
    return true;
}

ich muss ja auch noch t.gefahrenklasse vergleichen? aber gefahrenklasse ist kein boolean wert, deshalb wird mir das nur rot angezeigt? ich soll ja vergleichen, dass es die selbe Konsistenz, sowie auch die selbe gefahrenklasse hat, aber wie?
 

mrBrown

Super-Moderator
Mitarbeiter
Wie vergleiche ich denn Enums miteinander?
Entweder mit compareTo oder equals oder ==, je nachdem was du mit vergleichen meinst. Auf Gleichheit kannst du mit den letzte beiden testen.

Ich habs, vielen dank :) @mihe7

Weiter gehts mit



Wie vergleiche ich denn Enums miteinander?

Hab bisher:

Java:
    public boolean passtZu(InhaltsTyp t) {
         if(t.fluessig == t.fluessig) {
            return false;
        }
    return true;
}

In welchen Fällen gilt denn t.fluessig == t.fluessig nicht?

ich muss ja auch noch t.gefahrenklasse vergleichen? aber gefahrenklasse ist kein boolean wert, deshalb wird mir das nur rot angezeigt? ich soll ja vergleichen, dass es die selbe Konsistenz, sowie auch die selbe gefahrenklasse hat, aber wie?

Überleg dir nach den genannten Regeln noch mal, was wann gelten muss, und formulier das mit eigenen Worten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
S Java Enum Java Basics - Anfänger-Themen 2
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
V Enum Java Basics - Anfänger-Themen 1
C Farben als Enum Java Basics - Anfänger-Themen 3
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
I JAXB und Enum Java Basics - Anfänger-Themen 7
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
N Java Enum converter Methode Java Basics - Anfänger-Themen 5
F Enum von Ländern Java Basics - Anfänger-Themen 8
J Klassen Enum als Informationsträger Java Basics - Anfänger-Themen 10
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
P Klassen Richtige Anwendung einer Enum-Klasse Java Basics - Anfänger-Themen 11
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
E Objektvergleich Enum Java Basics - Anfänger-Themen 7
kilopack15 Euromünzen in enum als Liste ausgeben Java Basics - Anfänger-Themen 11
N Enum als generischer Typ Java Basics - Anfänger-Themen 4
H Datentypen Fehler bei Verwendung von enum Java Basics - Anfänger-Themen 9
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
S Menüauswahl per Enum Java Basics - Anfänger-Themen 12
F Enum via String definieren Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
P Fallunterscheidung mit Überprüfung (enum) Java Basics - Anfänger-Themen 11
H enum Type Java Basics - Anfänger-Themen 6
F Operatoren Enum aus Textdabei laden Java Basics - Anfänger-Themen 3
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
kaoZ Variablen Konstantensammlung vs. Enum Java Basics - Anfänger-Themen 9
H Enum außerhalb einer Klasse? Java Basics - Anfänger-Themen 2
K OOP Aufzählungstypen! enum Currency!!! Java Basics - Anfänger-Themen 5
F ENUM als Variable Java Basics - Anfänger-Themen 4
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
A Erste Schritte ENUM - Werte zurückgeben Java Basics - Anfänger-Themen 5
D Enum als Parameter Java Basics - Anfänger-Themen 6
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Enum vererben/gruppieren? Java Basics - Anfänger-Themen 6
F Datentypen enum Java Basics - Anfänger-Themen 5
J Enum zählen Java Basics - Anfänger-Themen 8
D Einlesen eines Enum-Wertes per console Java Basics - Anfänger-Themen 3
K String mit ENUM vergleichen? Java Basics - Anfänger-Themen 6
N enum vergleiche Klammern? Java Basics - Anfänger-Themen 5
J public enum? in Java Java Basics - Anfänger-Themen 9
D Erste Schritte Enum - das unbekannte Wesen Java Basics - Anfänger-Themen 3
Y ENUM auslesen (Name des ENUM als Variable) Java Basics - Anfänger-Themen 4
P Compiler-Fehler "class, interface, or enum expected" Java Basics - Anfänger-Themen 5
K class, interface or enum expected Java Basics - Anfänger-Themen 14
pg1337 enum-Aufgabe Java Basics - Anfänger-Themen 5
N was sagt enum aus? Java Basics - Anfänger-Themen 3
S Methoden Enum Parameter in Methode Java Basics - Anfänger-Themen 7
G Datentypen enum Frage Java Basics - Anfänger-Themen 3
R Probleme mit Enum Java Basics - Anfänger-Themen 10
B Enum: Instanzen Java Basics - Anfänger-Themen 10
B Generic? Enum - So lösbar? Java Basics - Anfänger-Themen 8
T class, interface, or enum expected Java Basics - Anfänger-Themen 2
M Vererbung Enum Vererbung/Polymorphie Java Basics - Anfänger-Themen 2
P Enum Attribut in Konstruktoren Java Basics - Anfänger-Themen 10
4 Enum Problem Java Basics - Anfänger-Themen 2
turmaline Bindestrich in enum? Java Basics - Anfänger-Themen 5
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
T ist enum.ordinal keine Konstante? Java Basics - Anfänger-Themen 7
R State machine mit enum Java Basics - Anfänger-Themen 9
L enum aus Integer umwandeln Java Basics - Anfänger-Themen 3
C Klasseninstanzierung mit enum-Parameter erzwingen Java Basics - Anfänger-Themen 2
I Enum in String Java Basics - Anfänger-Themen 4
N enum richtig verwenden Java Basics - Anfänger-Themen 5
M for(Enum..., ButtonGroup.getElements()... Java Basics - Anfänger-Themen 3
StrikeTom Fragen zu enum Java Basics - Anfänger-Themen 4
A Was ist performanter für Konstanten, enum oder static variablen Java Basics - Anfänger-Themen 5
L String zu Enum parsen Java Basics - Anfänger-Themen 8
J Datentypen Array in enum, ?? Wozu ?? Java Basics - Anfänger-Themen 3
S OOP Durch ein Enum iterieren... Java Basics - Anfänger-Themen 47
K Datentypen enum und liste Java Basics - Anfänger-Themen 7
S String - Enum Java Basics - Anfänger-Themen 3
H Eine enum switchen? Java Basics - Anfänger-Themen 7
G enum für Typsicherheit Java Basics - Anfänger-Themen 9
J class, interface, or enum expected - finde Fehler nicht. Java Basics - Anfänger-Themen 4
J OOP enum Java Basics - Anfänger-Themen 2
O Problem (Enum) Java Basics - Anfänger-Themen 14
S Enum als Index Java Basics - Anfänger-Themen 5
H Enum --> int ?? Java Basics - Anfänger-Themen 3
tanja enum in java Java Basics - Anfänger-Themen 3
D class, interface or enum expected Java Basics - Anfänger-Themen 2
A OOP Übergabe eines Wertes an den enum Konstruktor Java Basics - Anfänger-Themen 12
T Simple Enum Fragen Java Basics - Anfänger-Themen 6
J class, interface, or enum expected Java Basics - Anfänger-Themen 4
R Enum und dann setter Setzen? Java Basics - Anfänger-Themen 44

Ähnliche Java Themen

Neue Themen


Oben