boolean Methode vergleichen


R3LLiK

Grünschnabel
#1
Ich habe probleme zu wissen ob man das so schreiben kann.

Java:
 public boolean enthealt(String muskel) {
       return this.equals(muskel);
    }
Die Aufgabenstellung ist:  liefert true, wenn dieses Gerät den angegebenen muskel unterstützt.
 
#2
Hi

Die Methode selber ist nicht falsch; hängt aber davon ab dass equals eben auch mit Strings umgehen kann.

Beim Namen (Buchstabendreher) und der Beschreibung kommen aber Zweifel am Sinn auf... wie schaut denn die gesamte Klasse aus?
 

R3LLiK

Grünschnabel
#3
Java:
package Fitness;

public class Fitnessgeraete {

    private String geraetename;
    private String geraetetyp;
    private Muskelgruppe muskeln;
    private int maxtraining;
    private int verbrauchtekalorien;
    private boolean stromversorgung;


    //Konstructor für die Klasse Fitnessgeraete mit allen Eigenschaften.
    public Fitnessgeraete (String geraetename, String geraetetyp,Muskelgruppe muskeln, int maxtraining, int verbrauchtekalorien, boolean stromversorgung)
    {
        this.geraetename = geraetename;
        this.geraetetyp = geraetetyp;
        this.muskeln = muskeln;
        this.maxtraining = maxtraining;
        this.verbrauchtekalorien = verbrauchtekalorien;
        this.stromversorgung = stromversorgung;
    }

    public int kalorienVerbrauch (int minuten)
    {
        double kalorienverbrauchprominute;
        kalorienverbrauchprominute = ((double)verbrauchtekalorien / 60) * minuten;
        return (int) kalorienverbrauchprominute;
    }

    public int kalorienVerbrauch (int stunden, int minuten)
    {
        return kalorienVerbrauch(minuten + 60 * stunden);
    }

    /*public void setVerbrauchtekalorien(int verbrauchtekalorien) {
        this.verbrauchtekalorien = verbrauchtekalorien;
    }*/

    public int getVerbrauchtekalorien(){
        return this.verbrauchtekalorien;
    }

    public boolean enthealt(String muskel) {
        return this.equals(muskel);
    }

    public boolean unterstuetzt (Muskelgruppe muskelGruppe)
    {
       return this.equals(muskelGruppe);
    }

    public boolean benoetigtStromversorgung ()
    {
        return stromversorgung;
    }
}
 
#4
Da gibts eine Muskelgruppe muskeln, die vermutlich mehrere Muskeldaten enthält?, und du sollst herausfinden ob der Parameter da enthalten ist ... die übergebene Muskel mit dem ganzen Fitnessgeraete zu vergleichen macht wie vermutet keinen Sinn.
 

R3LLiK

Grünschnabel
#5
Hier ist sie
Java:
package Fitness;

public class Muskelgruppe {

    private String muskelgruppe;
    public String muskeln[];

    public Muskelgruppe(String muskelgruppe, String muskeln[]) {
        this.muskelgruppe = muskelgruppe;
        this.muskeln = muskeln;
    }



    public boolean enthealt(String muskel) {

        for (String m : muskeln) {
            m.equals(muskel);

        }
        return true;
    }
}
der gibt mir immer das falsche aus
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#6
Hi,

versuchs mal so:
Java:
    public boolean enthealt(String muskel) {
        for (String m : muskeln) {
            if(m.equals(muskel)) return true;
        }
        return false;
    }
Grüsse,
BK

// Edit: Verwende bitte englische Bezeichner für deine Methodennamen. Wenn ich Methoden wie "enthaelt" lese, dann ziehts mir kalt den Rücken runter. "contains" wäre hier der richtige Name.
 
Zuletzt bearbeitet:

R3LLiK

Grünschnabel
#7
Jetzt hab ich das Prinzip verstanden. Danke dir.
Hab aber noch ein problem Bei dieser Methode muss ich folgendes machen liefert true, wenn dieses Gerät ein eine bestimmte muskelGruppe unterstützt
Java:
 public boolean unterstuetzt (Muskelgruppe muskelGruppe)
    {
       if (this.equals(muskelGruppe)){
           return true;
       }else
           return false;
    }
 

RednexR

Grünschnabel
#10
Hallo! Ich habe das gleiches Problem. Kann jemand meine Code korrigieren?

Java:
public class Muskelgruppe {


    private String[] muskel;

    private String muskelgruppe;

    public Muskelgruppe(String muskelgruppe, String muskel[]) {
        this.muskelgruppe = muskelgruppe;
        this.muskel = muskel;
    }

    Muskelgruppe Legs = new Muskelgruppe("Legs", new String[]{"Quadriceps", "Hips", "Calves", "Hamstrings"});
    Muskelgruppe Back = new Muskelgruppe("Back", new String[]{"LOwer back", "Middle back", "Traps"});
    Muskelgruppe Arms = new Muskelgruppe("Arms", new String[]{"Biceps", "Triceps", "Forearms"});
    Muskelgruppe Shoulders = new Muskelgruppe("Shoulders", new String[]{"Delts"});
    Muskelgruppe Chest = new Muskelgruppe("Chest", new String[]{"Lower chest", "Middle chest", "Upper chest"});
    Muskelgruppe Abs = new Muskelgruppe("Abs", new String[]{"Lower abs", "Upper abs"});

    public boolean enthealt(String muskel) {
        for (String m : muskel) {
            if(m.equals(muskel)) return true;
        }
        return false;
    }
    }
Klasse Fitnessgerät
Java:
import java.util.Arrays;

public class Fintessgeraet {


    private String geraetename;
    private String geraetetyp;
    private int maxTrainingsdauer;
    public int verbrauchteKkal;
    private int stundennachmin;
    private boolean stromversorgung;
    private Muskelgruppe muskel;
    private String muskelgruppe;


    public Fintessgeraet(String geraetename, String geraetetyp, int maxTrainingsdauer, String muskelgruppe, int verbrauchteKkal) {
        this.geraetename = geraetename;
        this.geraetetyp = geraetetyp;
        this.maxTrainingsdauer = maxTrainingsdauer;
        this.muskelgruppe = muskelgruppe;
        this.verbrauchteKkal = verbrauchteKkal;
    }

    public void setGeraetename(String geraetename) {
        this.geraetename = geraetename;
    }

    public void setGeraetetyp(String geraetetyp) {
        this.geraetetyp = geraetetyp;
    }

    public void setMaxTrainingsdauer(int maxTrainingsdauer) {
        this.maxTrainingsdauer = maxTrainingsdauer;
    }

    public void setMuskelgruppe(String Muskelgruppe) {
        this.muskelgruppe = muskelgruppe;
    }

    public void setMuskel(Muskelgruppe muskel) {
        this.muskel = muskel;
    }

    public String getGeraetename() {
        return geraetename;
    }

    public String getGeraetetyp() {
        return geraetetyp;
    }

    public int getMaxTrainingsdauer() {
        return maxTrainingsdauer;
    }

    public int getVerbrauchteKkal() {
        return this.verbrauchteKkal;
    }

    public String getMuskelgruppe() {
        return this.muskelgruppe;
    }

    public Muskelgruppe getMuskel() {
        return this.muskel;
    }


    int kalorienverbrauch(int minuten) {
        double kkalverbrauchpromin;
        kkalverbrauchpromin = ((double) verbrauchteKkal / 60) * minuten;
        return (int) kkalverbrauchpromin;
    }

    int kalorienverbrauch(int minuten, int stunden) {
        return kalorienverbrauch(minuten + 60 * stunden); //berechnet stunden-> minuten

    }


    boolean benoetigtStromversorgung() {
        if (this.geraetetyp == "Cardio") {
            return true;
        } else {
            return false;
        }
    }


    boolean unterstützt(String muskel) {
        return this.muskel.equals(muskel);
    }

    boolean unterstützt(Muskelgruppe muskelgruppe) {
        return this.muskelgruppe.equals(muskelgruppe);




    }
}
Vielen Dank für alle Hilfe im Voraus)
 

zerix

Hausmeister
Moderator
#11
Hallo,

du machst es dir etwas leicht mit der Art "hier ist mein Code - korrigiert mal". Sowas wird dir auch nicht viel bringen.
Du willst wissen, ob ein Gerät einen bestimmten Muskel traininert. In deinem aktuellen Code vergleichst du eine Muskelgruppe mit einem Muskel (equals bedeutet gleich), also ist die Muskelgruppe == Muskel.
Hier sieht man schon von den Namen her, dass das nicht passt, denn ein Muskel kann nicht gleich einer ganzen Gruppe sein. BTW bei dir heißt die Variable für die Muskelgruppe muskel, was schon eine verwirrende Bezeichnung ist.
Wenn du wissen willst, ob der Muskel trainiert wird, musst du dir von der Muskelgruppe alle Muskeln geben lassen und dann (in einer Schleife) alle Muskeln mit dem übergebenen Muskel vergleichen, sobald dann ein Muskel gleich ist, muss true zurückgegeben werden.


Viele Grüße
Sascha
 
Zuletzt bearbeitet: