If Funktionen, GUI, Fachklasse

Bitte aktiviere JavaScript!
Hallo,
ich bin gerade dabei ein sehr einfaches Programm zur Kurvendiskussion zu schreiben.
Dabei habe ich eine Fachklasse und eine GUI.
Nun habe ich in der Fachklasse eine if-Funktion geschrieben und möchte das Ergebnis nun in einer Textarea in der GUI ausgeben, wenn ich dort auf einen Button klicke. Ich weiß allerdings nicht mehr wie ich das mache?
Ich weiß, dass dies eine sehr "dumme" Frage ist, bin jedoch in letzter Zeit aus der Übung gekommen haha.

Java:
public double oeffnung() {
        if(this.a >=0) {
            
        }
        else(){
            
            
        }
    }
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
1. Das Ding heißt if-Anweisung .. es gib keine if-Funktion :p
2. Es gibt jetzt mehrere Herangehensweisen für dein Problem. "Am schönsten" wäre es, wenn deine Fachklasse die GUI über Änderungen informieren würde und diese dann anzeigt. Das kannst du einfach darüber lösen, dass du eine Instanz deiner GUI in die Fachklasse rein gibst. In der Gui Klasse deklarierst du dann eine Methode, die die übergebenen Änderungen (String, oder was auch immer) in die Textarea schreibt. Diese Methode rufst du dann in der Fachklasse in der if-Abfrage an passender Stelle auf.
 
Zu dem, was @Robat bereits schrieb,
Ich weiß, dass dies eine sehr "dumme" Frage ist, bin jedoch in letzter Zeit aus der Übung gekommen haha
Nur ganz wenige Fragen sind "dumme Fragen",
das ist aber etwas kindisch und deutet nicht auf Intelligenz hin. :D
Nun habe ich in der Fachklasse eine if-Funktion geschrieben und möchte das Ergebnis nun in einer Textarea in der GUI ausgeben, wenn ich dort auf einen Button klicke. Ich weiß allerdings nicht mehr wie ich das mache
MVC Pattern...
 
Moin,

und nimm' die Klammern beim ELSE weg! Das dürfte so wohl nicht compilieren !
Und gewöhne Dir gleich mal sprechende Variablennamen an! Glaub' mir, in wenigen Wochen weißt Du nicht mehr, was 'a' sein sollte!

VG Klaus
 
Moin,

und nimm' die Klammern beim ELSE weg! Das dürfte so wohl nicht compilieren !
Und gewöhne Dir gleich mal sprechende Variablennamen an! Glaub' mir, in wenigen Wochen weißt Du nicht mehr, was 'a' sein sollte!

VG Klaus
Danke, für den hinweis. Sind schon längst weg :)


Der Variablenname a hat schon seine Absicht. Da ich eine Kurvendiskussion für Parabeln beziehe (ax2 +bx+c), passen für mich die Variablennamen a,b und c gut :)
 
Zu meinem Problem: Bei "normalen" Methoden ist es mir wieder eingefallen.
Fachklasse:
Java:
public double berechneScheitelY() {
        double vY=0;
        vY= this.c - ((this.b*this.b)/(this.a * 4));
        return vY;
    }
GUI:
Java:
public void ab() {
        taAusgabe.append("Scheitel: "+ eineFunktion.berechneScheitelY());
    }
Jedoch weiß ich immer noch nicht genau wie ich das bei der if-Funkion mache. Denn ohne Datenbankanbindung habe ich das immer in der Console (System.out.print....) ausgeben lassen. Jetzt will ich es ja aber im Textarea ausgeben lassen.
 
Interessant, ich habe Dir mal den Anfang geschrieben (kannst Du gern verwenden)
Java:
import java.util.Scanner;

public class Funktionen {
	private float a, b, c;

	public Funktionen(float a, float b, float c) {
		super();
		this.a = a;
		this.b = b;
		this.c = c;
	}

	public static void main(String[] args) {
		System.out.println("Gib eine Funktion mit Grad 2 ein.");
		System.out.print("a: ");
		float a = nf();
		System.out.print("b: ");
		float b = nf();
		System.out.print("c: ");
		float c = nf();
		Funktionen f = new Funktionen(a, b, c);

		f.symmetrie();
		f.nullstellen();
		f.extrema();
		f.monotonie();
		f.wendepunkte();
		f.wertetabelle();
	}

	@SuppressWarnings("resource")
	private static float nf() {
		return new Scanner(System.in).nextFloat();
	}

	boolean gerade(float a) {
		return a % 2 == 0;
	}

	void symmetrie() {
		if (gerade(a) && gerade(b) && gerade(c)) {
			System.out.println("f ist achsensymmetrisch zur y-Achse");
		} else if (!gerade(a) && !gerade(b) && !gerade(c)) {
			System.out.println("f ist punktsymmetrisch zum Koordinatenursprung");
		} else {
			System.out.println("f ist nicht symmetrisch");
		}
	}

	void nullstellen() {
		float d = 1f / a;
		// float e = a * d;
		float f = b * d;
		float g = c * d;
		float h = f / 2f;
		float x = (float) (h + Math.sqrt(h * h - g));
		float y = (float) (h - Math.sqrt(h * h - g));
		System.out.println("f hat eine Nullstelle bei " + x);
		System.out.println("f hat eine Nullstelle bei " + y);
	}

	void extrema() {
		// TODO
	}

	void monotonie() {
		// TODO
	}

	void wendepunkte() {
		// TODO
	}

	void wertetabelle() {
		for (int i = 0; i <= 20; i++) {
			float x = -5f + (i / 2f);
			float y = a * x * x;
			float z = b * x;
			System.out.println("x " + (x) + " y " + (y + z + c));
		}
	}
}

Bei nullstellen() stimmen die Vorzeichen allerdings noch nicht...
 
Interessant, ich habe Dir mal den Anfang geschrieben (kannst Du gern verwenden)
Java:
import java.util.Scanner;

public class Funktionen {
    private float a, b, c;

    public Funktionen(float a, float b, float c) {
        super();
        this.a = a;
        this.b = b;
        this.c = c;
    }

    public static void main(String[] args) {
        System.out.println("Gib eine Funktion mit Grad 2 ein.");
        System.out.print("a: ");
        float a = nf();
        System.out.print("b: ");
        float b = nf();
        System.out.print("c: ");
        float c = nf();
        Funktionen f = new Funktionen(a, b, c);

        f.symmetrie();
        f.nullstellen();
        f.extrema();
        f.monotonie();
        f.wendepunkte();
        f.wertetabelle();
    }

    @SuppressWarnings("resource")
    private static float nf() {
        return new Scanner(System.in).nextFloat();
    }

    boolean gerade(float a) {
        return a % 2 == 0;
    }

    void symmetrie() {
        if (gerade(a) && gerade(b) && gerade(c)) {
            System.out.println("f ist achsensymmetrisch zur y-Achse");
        } else if (!gerade(a) && !gerade(b) && !gerade(c)) {
            System.out.println("f ist punktsymmetrisch zum Koordinatenursprung");
        } else {
            System.out.println("f ist nicht symmetrisch");
        }
    }

    void nullstellen() {
        float d = 1f / a;
        // float e = a * d;
        float f = b * d;
        float g = c * d;
        float h = f / 2f;
        float x = (float) (h + Math.sqrt(h * h - g));
        float y = (float) (h - Math.sqrt(h * h - g));
        System.out.println("f hat eine Nullstelle bei " + x);
        System.out.println("f hat eine Nullstelle bei " + y);
    }

    void extrema() {
        // TODO
    }

    void monotonie() {
        // TODO
    }

    void wendepunkte() {
        // TODO
    }

    void wertetabelle() {
        for (int i = 0; i <= 20; i++) {
            float x = -5f + (i / 2f);
            float y = a * x * x;
            float z = b * x;
            System.out.println("x " + (x) + " y " + (y + z + c));
        }
    }
}

Bei nullstellen() stimmen die Vorzeichen allerdings noch nicht...
Vielen Dank, das sieht echt gut aus:)
Jedoch meine Frage, du hast die Lösung bzw Anweisung der if Funktion in der Konsole ausgeben lassen, ich möchte sie ja aber im Textarea ausgeben lassen...
Die Nullstellen werde ich wahrscheinlich über die Diskriminante mithilfe einer Arrayliste berechnen.
 
Jedoch meine Frage, du hast die Lösung bzw Anweisung der if Funktion in der Konsole ausgeben lassen, ich möchte sie ja aber im Textarea ausgeben lassen...
Du kannst in der "if Funktion" einfach ganz normal return nutzen, wie in allen anderen Funktionen auch.

Java:
public double oeffnung() {
        if(this.a >=0) {
            return 1;
        }
        else {
            return -1;
        }
    }
Und die dann genauso Aufrufen, wie alle anderen Funktionen:
Java:
taAusgabe.append("Öffnung: "+ eineFunktion.oeffnung());
 
Um noch mal auf meine if Anweisung zurück zu kommen, ich stehe da jetzt vor 2 Problemen. Das mit return hat an sich funktioniert, nur leider nicht so wie gewollt. Da ich ja in der GUI der if Funktion je nach Fall einen Satz, der in einer Textarea ausgegeben wird, zuweise brauche ich ich bei der Methode keine Ausgabe. Durch den return bei der if Funktion wird mir allerdings noch der Wert des Returns mit ausgegeben, kann ich das irgendwie unterbinden?

Desweiteren verstehe ich nicht ganz wieso meine if Anweisung immer nur den ersten Fall durchläuft auch wenn a negativ ist?!
 
Da ich ja in der GUI der if Funktion je nach Fall einen Satz, der in einer Textarea ausgegeben wird, zuweise brauche ich ich bei der Methode keine Ausgabe.
Gibt's das auch auf Deutsch?
Durch den return bei der if Funktion wird mir allerdings noch der Wert des Returns mit ausgegeben, kann ich das irgendwie unterbinden?
Durch einen return wird nichts ausgegeben. Das passiert an anderer Stelle. In der Fachklasse entfernst Du einfach die Ausgabe.

Desweiteren verstehe ich nicht ganz wieso meine if Anweisung immer nur den ersten Fall durchläuft auch wenn a negativ ist?!
Ohne Code kann man dazu nichts sagen. Wenn Du
Java:
if (a>=0) {
    System.out.println("a positiv");
} else {
    System.out.println("a negativ");
}
hast, wird der then-Zweig nur durchlaufen, wenn a >= 0 gilt, ansonsten der else-Zweig.
 
Gibt's das auch auf Deutsch?
Ich unterscheide ja zwei Fälle, einmal >= 0 und einmal kleiner 0. Wenn es der erste Fall ist, so soll mir im Textarea ausgegeben werden: "Öffnung: nach oben geöffnet".
Durch einen return wird nichts ausgegeben. Das passiert an anderer Stelle. In der Fachklasse entfernst Du einfach die Ausgabe.
Meinst du den return einfach mit System.out.print ersetzen?
Ohne Code kann man dazu nichts sagen. Wenn Du
Java:
if (a>=0) {
    System.out.println("a positiv");
} else {
    System.out.println("a negativ");
}
hast, wird der then-Zweig nur durchlaufen, wenn a >= 0 gilt, ansonsten der else-Zweig.
ich schau noch mal nach
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben