Wo ist mein Fehler in der Methode DRINGEND

Ru$h

Aktives Mitglied
Hallo,
ich habe folgende Methode:

Java:
 public void auswertenMerkmal (Schmetterling Kinder[], String merkmal){
                 
                // Lege Teilliste an, welche nur diejenigen Schmetterlinge beinhaltet, die das gewünschte Merkmal besitzen.
              
                LinkedList<Schmetterling> KinderMerkmal = new LinkedList<Schmetterling>();
               
                 for (int i=0; i<Kinder.length; i++){
                     if ((Kinder[i].getFuehlerform().equals(merkmal)) || (Kinder[i].getMusterung().equals(merkmal)) || (Kinder[i].getFluegelfarbe().equals(merkmal))){
                         KinderMerkmal.add(Kinder[i]);
                     }
                }
                  System.out.println(KinderMerkmal);
            }

Dazu eine Erklärung: die Methode bekommt eine "Liste" Schmetterling Kinder[] von ca. 1500 Schmetterlingen mit jeweils 3 unterschiedlichen Merkmalen (Musterung(entweder keins, gepunktet oder streifen), Farbe(rot, gelb, grün, blau), Fühlerform(gerade oder gekrümmt)). Es kommen daher in der "Liste" Schmetterlinge mehrfach vor.
Wenn ich der Methode noch ein Merkmal mit hinzu gebe, dann soll diese Methode mir eine Teilliste erstellen, mit der prozentualen Anzahl der Schmetterlinge mit dem hereingegeben Merkmal.
Meine Methode ist aber nicht richtig. Die Konsole spuckt mir folgendes aus: []

den Scanner habe ich in einer anderen Klasse so prgrammiert:
Java:
String merkmal = "";
        System.out.println (" ");
        System.out.println ("Welches Merkmal wollen Sie von allen Kinderschmetterlingen genauer untersuchen?");
        System.out.println ("Geben Sie '1' für 'keine Musterung', '2' für 'schwarze Punkte', '3' für 'schwarze Streifen',");
        System.out.println("'4' für 'rot', '5' für 'gelb', '6' für 'grün', '7' für 'blau', '8' für 'gerade Fühler', '9' für 'gekrümmte Fühler' ein");       
           while(merkmal == ""){
           String EingabeV1 = scanner.nextLine();
            switch (EingabeV1){
                case "1": merkmal = "keine Musterung";
                break;
                case "2": merkmal = "schwarze Punkte";
                break;
                case "3": merkmal = "schwarze Streifen";
                break;
                case "4": merkmal = "rot";
                break;
                case "5": merkmal = "gelb";
                break;
                case "6": merkmal = "grün";
                break;
                case "7": merkmal = "blau";
                break;
                case "8": merkmal = "gerade Fühler";
                break;
                case "9": merkmal = "gekrümmte Fühler";
                break;
                default: System.out.println("Eingabe ungültig!");
            }
        }
           Auswertung auswertung2 = new Auswertung();
           auswertung2.auswertenMerkmal(Kinder, merkmal);

Kann jemand meine Methode korrigieren. Ich sehe den Fehler nicht
 
Zuletzt bearbeitet:

Robat

Top Contributor
1. Du hast in deiner while-Schleife merkmal == "" stehen .. Strings vergleicht man inhaltlich aber mit merkmal.equals("")
2. Sind die Merkmale in der switch-case-Anweisung wirklich genau so geschrieben wie bei den Schmetterlingsobjekten?
 

Ru$h

Aktives Mitglied
Ja die Merkmale in der switch-case-Anweisung sind wirklich genau so geschrieben wie bei den Schmetterlingsobjekten
und wenn ich in der while-schleife die Vergleiche auf merkmal.equals setze,
Java:
String merkmal = "";
        System.out.println (" ");
        System.out.println ("Welches Merkmal wollen Sie von allen Kinderschmetterlingen genauer untersuchen?");
        System.out.println ("Geben Sie '1' für 'keine Musterung', '2' für 'schwarze Punkte', '3' für 'schwarze Streifen',");
        System.out.println("'4' für 'rot', '5' für 'gelb', '6' für 'grün', '7' für 'blau', '8' für 'gerade Fühler', '9' für 'gekrümmte Fühler' ein");       
           while(merkmal == ""){
           String EingabeV1 = scanner.nextLine();
            switch (EingabeV1){
                case "1": merkmal.equals("keine Musterung");
                break;
                case "2": merkmal = "schwarze Punkte";
                break;
                case "3": merkmal = "schwarze Streifen";
bringt er mir für die 1 und für die 2 folgendes zurück
Code:
Welches Merkmal wollen Sie von allen Kinderschmetterlingen genauer untersuchen?
Geben Sie '1' für 'keine Musterung', '2' für 'schwarze Punkte', '3' für 'schwarze Streifen',
'4' für 'rot', '5' für 'gelb', '6' für 'grün', '7' für 'blau', '8' für 'gerade Fühler', '9' für 'gekrümmte Fühler' ein
1
2
[MendelsLand.Schmetterling@4554617c, MendelsLand.Schmetterling@74a14482,
 

Robat

Top Contributor
Der Hinweis von 1. galt wirklich nur der Bedingung deiner while-Schleife. Die switch-case war okay.
Du kannst dir in deiner auswerten-Methode mal die Merkmale der Schmetterlinge + dein übergebenes Merkmal ausgeben lassen. So kannst du zumindest feststellen, ob da eventuell doch Unterschiede bestehen.
 

Ru$h

Aktives Mitglied
Also das funktioniert:
Code:
1   Keine Musterung, rot, gerade  12.792792792792792 Prozent
2   Keine Musterung, rot, gekrümmt  10.18018018018018 Prozent
3   Keine Musterung, gelb, gerade  12.702702702702704 Prozent
4   Keine Musterung, gelb, gekrümmt  12.432432432432433 Prozent
5   Keine Musterung, grün, gerade  0.0 Prozent
6   Keine Musterung, grün, gekrümmt  0.0 Prozent
7   Keine Musterung, blau, gerade  0.0 Prozent
8   Keine Musterung, blau, gekrümmt  0.0 Prozent
9   schwarze Punkte, rot, gerade  12.252252252252251 Prozent
10   schwarze Punkte, rot, gekrümmt  14.414414414414415 Prozent
11   schwarze Punkte, gelb, gerade  12.522522522522522 Prozent
12   schwarze Punkte, gelb, gekrümmt  12.702702702702704 Prozent
13   schwarze Punkte, grün, gerade  0.0 Prozent
14   schwarze Punkte, grün, gekrümmt  0.0 Prozent
15   schwarze Punkte, blau, gerade  0.0 Prozent
16   schwarze Punkte, blau, gekrümmt  0.0 Prozent
17   schwarze Streifen, rot, gerade  0.0 Prozent
18   schwarze Streifen, rot, gekrümmt  0.0 Prozent
19   schwarze Streifen, gelb, gerade  0.0 Prozent
20   schwarze Streifen, gelb, gekrümmt  0.0 Prozent
21   schwarze Streifen, grün, gerade  0.0 Prozent
22   schwarze Streifen, grün, gekrümmt  0.0 Prozent
23   schwarze Streifen, blau, gerade  0.0 Prozent
24   schwarze Streifen, blau, gekrümmt  0.0 Prozent
Welches Merkmal wollen Sie von allen Kinderschmetterlingen genauer untersuchen?
Geben Sie '1' für 'keine Musterung', '2' für 'schwarze Punkte', '3' für 'schwarze Streifen',
'4' für 'rot', '5' für 'gelb', '6' für 'grün', '7' für 'blau', '8' für 'gerade Fühler', '9' für 'gekrümmte Fühler' ein
1
keine Musterung

mit

Java:
public void auswertenMerkmal (Schmetterling Kinder[], String merkmal){
          
            System.out.println(merkmal);
                 
              /*  // Lege Teilliste an, welche nur diejenigen Schmetterlinge beinhaltet, die das gewünschte Merkmal besitzen.
              
                LinkedList<Schmetterling> KinderMerkmal = new LinkedList<Schmetterling>();
               
                 for (int i=0; i<Kinder.length; i++){
                     if ((Kinder[i].getFuehlerform().equals(merkmal)) || (Kinder[i].getMusterung().equals(merkmal)) || (Kinder[i].getFluegelfarbe().equals(merkmal))){
                         KinderMerkmal.add(Kinder[i]);
                     }
                }
                 System.out.println(KinderMerkmal);
           */  }

Aber dadurch wird mein Problem nicht besser :(
Es liegt also wirklich nur an meiner auswerten - Methode :(
Hast du eine Idee?
 

Robat

Top Contributor
Wenn mich nicht alles täusch ist dein Merkmal am Anfang klein geschrieben aber das Merkmal der Schmetterlinge beginnt mit einem großen k.
keine Musterung
Keine Musterung
 

Ru$h

Aktives Mitglied
Hups gar nicht gesehen. Vielen Dank!
Aber es ändert trotz alle dem nichts an der Ausführung.
Ich habe die Methode nun so angepasst:
Java:
public double[] auswertenMerkmal (Schmetterling Kinder[], String merkmal){
           
            System.out.println("Sie haben "+merkmal+" gewählt");
       
           
            int[] zaehler = new int[9];
            for(int i=0;i<9;i++){
                zaehler[i] = 0;
            }
           
            for (int i=0; i<Kinder.length; i++){
                if (Kinder[i].getMerkmal() == "Keine Musterung"){
                    zaehler[0]++;
                    }
                     else if (Kinder[i].getMerkmal() == "schwarze Punkte"){
                            zaehler[1]++;
                     }
                     else if (Kinder[i].getMerkmal() == "schwarze Streifen"){
                            zaehler[2]++;
                     }
                     else if (Kinder[i].getMerkmal() == "rot"){
                            zaehler[3]++;
                     }
                     else if (Kinder[i].getMerkmal() == "gelb"){
                            zaehler[4]++;
                     }
                     else if (Kinder[i].getMerkmal() == "grün"){
                            zaehler[5]++;
                     }
                     else if (Kinder[i].getMerkmal() == "blau"){
                            zaehler[6]++;
                     }
                     else if (Kinder[i].getMerkmal() == "gerade"){
                            zaehler[7]++;
                     }
                     else if (Kinder[i].getMerkmal() == "gekrümmt"){
                            zaehler[8]++;
                     }
               
                }
                double[] Anteile2 = new double[9];
                for(int i =0;i<9;i++){
                    Anteile2[i] = (double)(zaehler[i]/Kinder.length) * 100;
                   
                    System.out.print(i+1);
                    System.out.print("  ");
                    switch(i){
                        case 0: System.out.print(" "+ "Keine Musterung"+" ");
                        break;
                        case 1: System.out.print(" "+ "schwarze Punkte"+" ");
                        break;
                        case 2: System.out.print(" "+ "schwarze Streifen"+" ");
                        break;
                        case 3: System.out.print(" "+ "rot"+" ");
                        break;
                        case 4: System.out.print(" "+ "gelb"+" ");
                        break;
                        case 5: System.out.print(" "+ "grün"+" ");
                        break;
                        case 6: System.out.print(" "+ "blau"+" ");
                        break;
                        case 7: System.out.print(" "+ "gerade"+" ");
                        break;
                        case 8: System.out.print(" "+ "gekrümmt"+" ");
                        break;
                    }
                      
                   // System.out.println(zaehler[i]);
                    System.out.println(" "+(double)zaehler[i]/Kinder.length*100+" "+"Prozent");
                }
            return Anteile2;
}

Die Frage ist nun noch, dass weder der zaéhler zählt, noch die Prozentzahl errecnet wird.
In der Schmetterlingsklasse habe ich noch einen Getter für das Merkmal geschrieben.
 

MoxxiManagarm

Top Contributor
Java:
Kinder[i].getMerkmal() == "schwarze Punkte"
else if (Kinder[i].getMerkmal() == "rot")
 else if (Kinder[i].getMerkmal() == "gerade"){
Unabhängig von dem ==, ich dachte du hast 3 verschiedene Merkmalstypen. Mit getMerkmal() kannst du doch aber theoretisch nur einen bekommen außer du machst einen append, aber dann ist der direkte Vergleich nicht richtig.

PS.: Ich stell mir gerade vor du willst mehr Merkmale hinzufügen wie anders farbige Musterungen. Dann musst du deinen Code komplett neu anpassen!

Meiner einer würde ja eventuell den Weg über Enum gehen.
package javaforum.org.schmetterlinge;

import java.util.ArrayList;

public class Schmetterlingsfarm {

private ArrayList<Schmetterling> schmetterlinge;

public Schmetterlingsfarm() {
schmetterlinge = new ArrayList<>();
}

public boolean addSchmetterling(Schmetterling schmetterling) {
return schmetterlinge.add(schmetterling);
}

public int zaehleMerkmal(Merkmal merkmal) {
int zaehler = 0;

for(Schmetterling schmetterling : schmetterlinge) {
if(schmetterling.hatMerkmal(merkmal)) zaehler++;
}

return zaehler;
}

public static void main(String[] args) {
Schmetterlingsfarm farm = new Schmetterlingsfarm();

farm.addSchmetterling(new Schmetterling(Musterung.GEPUNKTED, Fuehler.GERADE));
farm.addSchmetterling(new Schmetterling(Musterung.GESTREIFT, Fuehler.GERADE));
farm.addSchmetterling(new Schmetterling(Musterung.GESTREIFT, Fuehler.GEKRUEMMT));

System.out.println("### MUSTERUNGEN ###");
for(Musterung musterung : Musterung.values()) {
System.out.println(musterung.ordinal() + " " + musterung.name() + " : " + farm.zaehleMerkmal(musterung));
}

System.out.println("\n### FUEHLER ###");
for(Fuehler fuehler : Fuehler.values()) {
System.out.println(fuehler.ordinal() + " " + fuehler.name() + " : " + farm.zaehleMerkmal(fuehler));
}
}
}

package javaforum.org.schmetterlinge;

public class Schmetterling {
private Musterung musterung;
private Fuehler fuehler;

public Schmetterling(Musterung musterung, Fuehler fuehler) {
this.musterung = musterung;
this.fuehler = fuehler;
}

public boolean hatMerkmal(Merkmal merkmal) {
return musterung.equals(merkmal) || fuehler.equals(merkmal);
}
}

package javaforum.org.schmetterlinge;

public enum Musterung implements Merkmal {
KEINE, GESTREIFT, GEPUNKTED;
}

package javaforum.org.schmetterlinge;

public enum Fuehler implements Merkmal {
GEKRUEMMT, GERADE;
}

package javaforum.org.schmetterlinge;

public interface Merkmal {

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
K Was ist mein Fehler? Allgemeine Java-Themen 2
K Wo ist mein Fehler? Allgemeine Java-Themen 21
B Fehler:Mein Applet kann nicht auf zwei txt-Dateien zugreifen Allgemeine Java-Themen 2
F Datei auslesen - wo ist mein Fehler? Allgemeine Java-Themen 9
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
T log4j2 Wo liegt mein Logfile? Allgemeine Java-Themen 3
Thallius Warum läst mein replace die Klammern drin? Allgemeine Java-Themen 10
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
Thallius App-Sprache in der App ändern. Wo ist mein Denkfehler? Allgemeine Java-Themen 6
M Mein erstes TicTacToe :-) Allgemeine Java-Themen 3
A Applet Mein Applet verursacht Browserabsturz Allgemeine Java-Themen 8
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
J Mein eigener Messenger und dessen Probleme Allgemeine Java-Themen 48
C Hilfe! Mein Java mag nich mehr ganz... Allgemeine Java-Themen 11
F VideoIntro für mein Programm Allgemeine Java-Themen 2
A Wie lasse ich mein Programm als Daemon laufen? Allgemeine Java-Themen 4
A Wie liefere ich mein Java-Programm richtig aus? Allgemeine Java-Themen 10
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
G Wie kann ich in mein Programm eine Updatefunktion einbauen Allgemeine Java-Themen 3
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
V Beratung zum Bestimmen der "Mittel"(Java,Sql) mein Allgemeine Java-Themen 3
S mit welchem befehl kann ich mein programm autom. schließen Allgemeine Java-Themen 3
R Mein Applet läuft in der IDE aber nicht. Allgemeine Java-Themen 2
M Bitte Testen: Mein Multi-File Editor Allgemeine Java-Themen 30
C Warum wartet mein thread nicht? Allgemeine Java-Themen 2
T läuft mein Programm schon? - wie feststellen Allgemeine Java-Themen 6
T Warum mein such-tool schneller als Windows such-tool? Allgemeine Java-Themen 5
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
A mein Frame wird nicht schnell genung aktualisiert Allgemeine Java-Themen 7
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
D Mein Bäumchen Allgemeine Java-Themen 6
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Fehler: <ID> erwartet Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
Pinhg Discord JDA Bot - Fehler Allgemeine Java-Themen 3
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
L Fehler mit Boolean. (Glaube ich zumindest) Allgemeine Java-Themen 6
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
O Fehler bei Variablen Allgemeine Java-Themen 2
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
C Fehler bei der Benutzung von itextpdf Allgemeine Java-Themen 1
U Fehler beim Compillieren Allgemeine Java-Themen 13
x46 String Format Fehler Allgemeine Java-Themen 2
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Fehler bei IF abfrage Allgemeine Java-Themen 8
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
M Einheitenrechner - Fehler Allgemeine Java-Themen 12
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
T Denk-Fehler? Allgemeine Java-Themen 4
A Finde den Fehler nicht. Allgemeine Java-Themen 7
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
D Unbekannter Fehler Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
L Fehler bei der Ausführung einer Jar Allgemeine Java-Themen 2
T OOP Fehler im Design Allgemeine Java-Themen 9
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
U Eclipse MANIFEST fehler Allgemeine Java-Themen 7
I Fehler bei HashMaps Darstellung Allgemeine Java-Themen 10
R Classnotfoundexception Fehler Allgemeine Java-Themen 3
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
N Prim's Algorithm - wo ist der Fehler? Allgemeine Java-Themen 3
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
M Line-Fehler Allgemeine Java-Themen 8
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
V AudioInputStream Fehler Allgemeine Java-Themen 1
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
G Fehler mit Vector Allgemeine Java-Themen 3
F Java Fehler "buildTableModel" Allgemeine Java-Themen 3
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
DanielsLPecke Input/Output Arduino komischer Fehler. Allgemeine Java-Themen 38
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
S Hashtable Fehler Allgemeine Java-Themen 14
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
Tausendsassa Compiler-Fehler Fertiges Programm mit Fehler Allgemeine Java-Themen 10
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben