If Funktionen, GUI, Fachklasse

zlFavourite

Aktives Mitglied
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(){
            
            
        }
    }
 

Robat

Top Contributor
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.
 
X

Xyz1

Gast
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...
 

VfL_Freak

Top Contributor
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
 

zlFavourite

Aktives Mitglied
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 :)
 

zlFavourite

Aktives Mitglied
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.
 

mrBrown

Super-Moderator
Mitarbeiter
Du kannst da genauso return nutzen, wie in einer "normalen Methoden", und die Methode auch genauso aufrufen
 
X

Xyz1

Gast
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...
 

zlFavourite

Aktives Mitglied
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.
 

mrBrown

Super-Moderator
Mitarbeiter
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());
 

zlFavourite

Aktives Mitglied
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?!
 

mihe7

Top Contributor
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.
 

zlFavourite

Aktives Mitglied
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
 
X

Xyz1

Gast
Also ich würd das erst mal wie oben in Beitrag #12 mit Funktionen/if-Fällen(/Abfragen) und System.out.println(); machen... WENN das steht, dann würd ich die System.out.println() ersetzen und an das GUI schicken...
 

zlFavourite

Aktives Mitglied
Also ich würd das erst mal wie oben in Beitrag #12 mit Funktionen/if-Fällen(/Abfragen) und System.out.println(); machen... WENN das steht, dann würd ich die System.out.println() ersetzen und an das GUI schicken...
So sieht jetzt meine if Anweisung aus.
Java:
public void oeffnung() {
        if(this.a >=0) {
            System.out.println("positiv");
        }
        else{
            System.out.println("negativ");
            
        }
    }
Jedoch meckert nun meine GUI wegen dem Operator +
Java:
public void ab() {
        taAusgabe.append("Öffnung: "+ eineFunktion.oeffnung()+ "nach oben geöffnet");
    }
 

flopalko

Bekanntes Mitglied
Natürlich bekommst du da einen Fehler. Deine Methode oeffnung hat Rückgabetyp void und nicht String.
Damit das funktioniert müsstest du die system.out.println durch return ersetzen und den Rückgabetyp auf String ändern.

Das ist aber kein schöner Programmierstil, besser wäre es ein MVC zu verwenden. Davon bist du aber viiiiel zu weit weg.
 

zlFavourite

Aktives Mitglied
Natürlich bekommst du da einen Fehler. Deine Methode oeffnung hat Rückgabetyp void und nicht String.
Damit das funktioniert müsstest du die system.out.println durch return ersetzen und den Rückgabetyp auf String ändern.

Das ist aber kein schöner Programmierstil, besser wäre es ein MVC zu verwenden. Davon bist du aber viiiiel zu weit weg.
ok danke, dann muss ich mal schauen was ich da jetzt mache
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Erste Schritte Bisektion mit zwei Funktionen? Java Basics - Anfänger-Themen 1
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
A Variablen Definitionen zu Codes und Funktionen. Java Basics - Anfänger-Themen 3
H Frage zu Methoden/Funktionen Java Basics - Anfänger-Themen 3
M Vererbung Funktionen in Basisklasse deklarieren Java Basics - Anfänger-Themen 4
J Funktionen auf der Rückgabe eines Stacks (pop) Java Basics - Anfänger-Themen 6
J Funktionen Java Basics - Anfänger-Themen 9
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
B Funktionen von außen aufrufen Java Basics - Anfänger-Themen 1
M Klassen Funktionen aus anderen Klassen benutzen Java Basics - Anfänger-Themen 3
G funktionen der super-klasse von der super-klasse Java Basics - Anfänger-Themen 6
R Funktionen Synchron laufen lassen Java Basics - Anfänger-Themen 10
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
A ganzrationale funktionen auswerten. Java Basics - Anfänger-Themen 1
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
S Funktionen zeichnen Java Basics - Anfänger-Themen 2
K Methoden Funktionen und Prozeduren Java Basics - Anfänger-Themen 11
R Rekursionen und Funktionen ... Java Basics - Anfänger-Themen 8
J Funktionen automatisiert aufrufen Java Basics - Anfänger-Themen 5
B Funktionen programmieren, die im Hintergrund aktiv sind Java Basics - Anfänger-Themen 2
O Funktionen dateiübergreifend mit Packages Java Basics - Anfänger-Themen 6
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
M Methoden Funktionen Java Basics - Anfänger-Themen 6
M Erste Schritte Fenster Und VB Funktionen Java Basics - Anfänger-Themen 8
G Aufruf externer Funktionen Java Basics - Anfänger-Themen 7
J Aufruf von Funktionen in *.jar mittels Eclipse Java Basics - Anfänger-Themen 4
0 Reguläre Ausdrücke und Funktionen Java Basics - Anfänger-Themen 2
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
B Ausgabe problem in Funktionen Java Basics - Anfänger-Themen 6
L Hat java keine virtuellen funktionen?? Java Basics - Anfänger-Themen 6
A Funktionen und Arrays Java Basics - Anfänger-Themen 2
C funktionen nur static? Java Basics - Anfänger-Themen 6
M MouseAdapter - auf Funktionen zugreifen Java Basics - Anfänger-Themen 13
L Funktionen addRow und deleteRow Java Basics - Anfänger-Themen 6
D Mathematische Funktionen Zeichnen Java Basics - Anfänger-Themen 2
D Variableninhalt über mehrere Funktionen ? Java Basics - Anfänger-Themen 3
Out.println Funktionen Java Basics - Anfänger-Themen 7
D Verständnisfrage zu Funktionen Java Basics - Anfänger-Themen 6
B Mathematische Funktionen Java Basics - Anfänger-Themen 3
D Warum sollte ich bestehende Funktionen "extend"en? Java Basics - Anfänger-Themen 32
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
N Funktionen berechnen in Java Java Basics - Anfänger-Themen 18
Kasoki Eigene Funktionen / Commands Java Basics - Anfänger-Themen 14
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
K zwei Funktionen, ein BufferedReader? Java Basics - Anfänger-Themen 8
A Static in Funktionen bringen Java Basics - Anfänger-Themen 7
J Funktionen in Java? Java Basics - Anfänger-Themen 3
A frage zur integration von funktionen anderer klassen Java Basics - Anfänger-Themen 2
T Funktionen Plotter - Klassen/Methoden/Funktionen Java Basics - Anfänger-Themen 13
A ChatGUI: Scrollbar und Funktionen Java Basics - Anfänger-Themen 5
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
W Funktionen mit Default werten Java Basics - Anfänger-Themen 10
G Müssen globale Funktionen immer "static" sein? Java Basics - Anfänger-Themen 13
S Überladen von Funktionen vermeiden Java Basics - Anfänger-Themen 5
B Funktionen ausführen vorm Beenden des Programmes Java Basics - Anfänger-Themen 13
M Mathematische Funktionen zeichnen. Java Basics - Anfänger-Themen 2
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
G Funktionen? Java Basics - Anfänger-Themen 7
S 2 regex-Funktionen benötigt Java Basics - Anfänger-Themen 4
S anzahl von funktionen Java Basics - Anfänger-Themen 9
B in der .Jar funktionieren nicht alle Funktionen Java Basics - Anfänger-Themen 18
X Threads+Funktionen Java Basics - Anfänger-Themen 6
S Explorer funktionen nachprogrammieren Java Basics - Anfänger-Themen 2
P Rexex - stringtokenizer - String funktionen allgemein Java Basics - Anfänger-Themen 3
G Problem mit nicht statischen Funktionen Java Basics - Anfänger-Themen 7
S Return bei Funktionen Java Basics - Anfänger-Themen 8
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16
D Funktionen/Methoden/Variablen includieren? :) Java Basics - Anfänger-Themen 4
V funktionen/Variablen f. unterschiedliche Klassen definierne? Java Basics - Anfänger-Themen 6
M mehreren klassen die gleichen funktionen bereitstellen? Java Basics - Anfänger-Themen 3
G Über undo, copy, cat, paste, delete Funktionen Java Basics - Anfänger-Themen 3
S Rekursive Funktionen in imperative Funktionen umwandeln Java Basics - Anfänger-Themen 2
Niki_Tesla 2 Fragen / Funktionen? Java Basics - Anfänger-Themen 4
B Code von Java-Funktionen einsehen Java Basics - Anfänger-Themen 2
B Mathematische funktionen Berechnen und ausgeben lassen?WIE? Java Basics - Anfänger-Themen 2
H Parameterübergabe zwischen einzelnen Funktionen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben