Parabel Daten ausgeben

feiste

Bekanntes Mitglied
Hey bin gerade dabei Java zu lernen
und mach grad ein paar einfache Aufgaben
bei dieser bin ich gerade :


Es soll eine Klasse PARABEL entwickelt werden, die die drei Parameter a, b
und c der quadratischen Funktion f(x) = ax² + bx + c als Attribute abspeichert.
Objekte dieser Klasse sollen als Methoden
● die Determinante,
● ob die Parabel nach oben geöffnet ist,
● die Anzahl der Schnittpunkte mit der X-Achse,
● die Schnittpunkte x
1
und x
2
mit der X-Achse


jetzt versuche ich gerade die Auszugeben wieviel Schnittpunkte die Parabel hat
das geht mit dieser Formel:
b²-4ac < 0 => 0 Schnittpunkte
b²-4ac > 0 => 2 Schnittpunkte
b²-4ac = 0 => 1 Schnittpunkt


nur weiß ich nicht wie ich das bei java machen muss ???:L
kann man da jmd weiterhelfen ??

danke
 

Haave

Top Contributor
Potenzieren kannst du mit der Methode Math.pow().

Der Rest sollte dann ungefähr so aussehen:

<pseudocode>
if(term < 0) return dasEine;
else if(term > 0) return dasAndere;
else return dasGanzAndere;
</pseudocode>
 

feiste

Bekanntes Mitglied
aber iwie gehts immer noch nicht bin jetzt soweit:

public class Parabel
{
private double a;
private double b;
private double c;

public Parabel(double neuesA, double neuesB, double neuesC)
{
a = neuesA;
b = neuesB;
c = neuesC;

double Determinante;
int AnzahlSchnittpunkte;
double Schnittpunkte;

if(b * b - 4*a*c > 0) return 2;
else if(b * b - 4*a*c < 0) return 0;
else if (b * b - 4*a*c = 0) return 1;
}
}



die fehlermeldung lautet:

cannot return a value from method whose result type is void.
 

Haave

Top Contributor
Die "public Parabel()"-Methode ist der sog. Konstruktor. Diese Methode hat keinen Rückgabewert (d.h., der Rückgabetyp ist void - leer), aber der If-else-Dreizeiler möchte eine Zahl zurückgeben, und deshalb gibt's die Fehlermeldung. Dieser Code macht im Konstruktor auch gar keinen Sinn, denn der ist dazu da, eine Instanz einer Klasse mit bestimmten Werten zu initialisieren und nicht dafür, eine derartige Berechnung auszuführen. Das sollte in eine eigene Methode ausgelagert werden, die eine Instanz von Parabel dann aufruft. Man könnte sie z.B. findeSchnittpunkteHeraus() nennen, mit dem Rückgabetyp int.

EDIT:
Und pass bei dieser Zeile auf, die wird nämlich gleich den nächsten Fehler reinhauen:
else if (b * b - 4*a*c = 0) return 1;
"=" steht für eine Zuweisung, "==" für einen Vergleich. Da du aber vergleichen willst, ob die linke Seite gleich der rechten ist, muss hier == hin.
 
Zuletzt bearbeitet:

feiste

Bekanntes Mitglied
könntest du das mit dem findeSchnittpunkteheraus() bei meinem Ansatz oben verbessern
weiß nicht genau wie das gehen sollte xD
 

Haave

Top Contributor
Java:
public int findeSchnittpunkteHeraus(double a, double b, double c) {
    double result = b * b - 4*a*c; //sinnvoll, da immer wieder lesend auf das Ergebnis zugegriffen wird
    //macht auch die folgenden Abfragen leichter lesbar
    if(result > 0) return 2;
    else if(result < 0) return 0;
    else return 1; //erneute Abfrage unnoetig, da result nur noch gleich 0 sein kann, wenn > und < ausgeschlossen wurden
}
 

feiste

Bekanntes Mitglied
danke =))

und wie kann ich jetzt noch sagen, dass der ausgegebene Wert
also 0,1 oder 2 AnzahlSchnittpunkte sein soll??
 

feiste

Bekanntes Mitglied
also ich will zum Schluß dann einen Text ausgeben der ungefähr so aussieht

System.out.println("Die Parabel hat " + AnzahlSchnittpunkte + " Schnittpunkte")

und für das AnzahlSchnittpunkte soll er eben 0 , 1 oder 2 ausgeben
 

Haave

Top Contributor
Du wirst die Methode findeSchnittpunkteHeraus() wahrscheinlich wiederum in einer anderen Methode benutzen, z.B. in der main()-Methode. Dort kannst du eine neue int-Variable anlegen und dieser den Wert zuweisen, den die Methode zurückgibt (also 0, 1 oder 2):
Java:
public static void main(String[] args) {
    //[…]
    int anzahlSchnittpunkte = findeSchnittpunkteHeraus(a, b, c); //a, b und c musst du natuerlich vorher selbst festlegen
    System.out.println("Die Parabel hat " + anzahlSchnittpunkte + " Schnittpunkte.");
}
 

feiste

Bekanntes Mitglied
das versteh ich jetzt gar nich ? :/

also ich bin jetzt soweit
und will jetzt nur noch die schnittpunkte ausgeben können
falls dir das weiterhilft
ich arbeite mit blueJ also ich erstell dann gar keine jar file mehr .!


Java:
public class Parabel
{


private double a;
private double b;
private double c;

public Parabel(double neuesA, double neuesB, double neuesC)
{
a = neuesA;
b = neuesB;
c = neuesC;

double Determinante;
double Schnittpunkte;
}

public int findeSchnittpunkteHeraus(double a, double b, double c) 
{
    double result = b * b - 4*a*c; 
    if(result > 0) return 2;
    else if(result < 0) return 0;
    else return 1; 


}
}
 

Haave

Top Contributor
Das hat ja auch gar nichts mit einem Jar-File zu tun ;)

Ich habe nicht mit BlueJ gearbeitet, aber soweit ich weiß, gibt es da die normale Java-main()-Methode nicht (dieses Teil: public static void main(String[] args) {/*irgendwas*/}). BlueJ verschleiert afaik einige Java-Details vor dem Programmierer, was Anfängern helfen soll, damit diese nicht überfordert werden, aber in diesem Fall führt das eben dazu, dass ich dir da nicht weiterhelfen kann. Wie gesagt, in "normalem" Java sieht es so aus, wie ich geschrieben habe - was BlueJ daraus macht, keine Ahnung.
 

feiste

Bekanntes Mitglied
achso okay trotzdem DANKEE =)
werds schon aleine schaffen :)

hab das mit der jar file gesagt
weil wenn ich es dann daraus ne jar file erzeugen will
geht das nur wenn man alles richtig macht und nicht wie in blueJ
 

Haave

Top Contributor
Noch ein Tipp:
Die beiden double Determinante und Schnittpunkte bringen dir so im Konstruktor nichts, weil du sie nur dort im Konstruktor erzeugst (genauer gesagt: deklarierst). Nach der Erstellung der Parabel-Instanz werden sie wieder verworfen - es sind sog. lokale Variablen. Damit diese beiden Variablen weiterhin zu den Parabel-Instanzen gehören, mach sie zu Instanzvariablen (oder Membervariablen, je nach Sprachgebrauch), wie auch schon double a, b und c Instanzvariablen sind.
Also:
Java:
public class Parabel
{
    private double a;
    private double b;
    private double c;
    private double determinante;
    private double anzahlSchnittpunkte;
    
    public Parabel(double neuesA, double neuesB, double neuesC)
    {
        a = neuesA;
        b = neuesB;
        c = neuesC;
    }
//mehr Code
}
 

feiste

Bekanntes Mitglied
jetzt hab ichs geschaft :)
so schwer wars ja jetzt doch nicht
sind halt meistens kleine Fehler wegen dens dann nicht funktioniert

nochmal danke für deine Hilfe =)

so schauts jetzt fertig aus:

Java:
public class Parabel
{


private double a;
private double b;
private double c;


public Parabel(double neuesA, double neuesB, double neuesC)
{
a = neuesA;
b = neuesB;
c = neuesC;


}
public double Determinante()
{
return b*b-4*a*c;
}

public int AnzahlSchnittpunkte()
{
    double result = b * b - 4*a*c; 
    if(result > 0) return 2;
    else if(result < 0) return 0;
    else return 1; 


}
public double Schnittpunkt1()
{
return -b + Math.sqrt(b*b - 4*a*c) / 2*a;
}
public double Schnittpunkt2()
{
return -b - Math.sqrt(b*b - 4*a*c) / 2*a;
}
public String Geöffnet()
{
if(a>0)
{
return "ist";
}

else 
{
return "ist nicht";
}
}


public void Ausgabe()
{
System.out.println("Parabel: a=" + a + " b=" + b + " c=" + c);
System.out.println("Die Parabel hat " + AnzahlSchnittpunkte() + " Schnittpunkte mit der X-Achse" );
System.out.println("X1: " + Schnittpunkt1());
System.out.println("X2: " + Schnittpunkt2());
System.out.println("Sie " + Geöffnet() + " nach oben geöffnet");

}
}
 

feiste

Bekanntes Mitglied
jetzt hab ich doch noch ne Frage
und zwar ich lass ja den Schnittpunkt x1 und x2 berechnen
nur wenn es keinen Schnittpunkt gibt, gibt er mir NaN aus.
will jetzt aber dass er mir dann: kein Schnittpunkt ausgibt!

zuerst wollte ich es so machen:

Java:
public double Schnittpunkt1()
{
if(AnzahlSchnittpunkte() == 0) return "kein Schnittpunkt";
else return -b + Math.sqrt(b*b - 4*a*c) / 2*a;
}

aber ich muss ja zuerst bestimmen ob er Zahlen oder Buchstaben ausgeben soll.
also kann ich gar nicht einmal "kein Schnittpunkt" und einmal eine Zahl ausgeben??

dann wollte ich es noch so machen:

Java:
public double Schnittpunkt1()
{
if(AnzahlSchnittpunkte() == 0) return ???;
else return -b + Math.sqrt(b*b - 4*a*c) / 2*a;
}
public String Schnittpunkt1n()
{
if(AnzahlSchnittpunkte() == 0) return "kein Schnittpunkt!";
else return "" ;
}

aber ich muss ja iwas angeben bei return ???
aber ich will dass er dort gar nichts ausgibt damit ich es dann so machen kann:

System.out.println("X1=" + Schnittpunkt1() + Schnittpunkt1n());
 
Zuletzt bearbeitet:

Haave

Top Contributor
zuerst wollte ich es so machen:

Java:
public double Schnittpunkt1()
{
if(AnzahlSchnittpunkte() == 0) return "kein Schnittpunkt";
else return -b + Math.sqrt(b*b - 4*a*c) / 2*a;
}
Funktioniert deshalb nicht, weil der Methodenkopf sagt, dass ein double zurückgegeben werden soll (public double Schnittpunkt1()), dann kannst du nicht einen String zurückgeben lassen. (In Python ginge das, aber ich finde es nicht gerade sehr sauber.)
ich frage mich vielmehr, warum du in der Methode zur Berechnung der Schnittpunkte abfragen lässt, ob es Schnittpunkte gibt. Es wäre sinnvoller, diese Abfrage eine Ebene höher zu machen, d.h., berechne die Schnittpunkte nur, wenn festgestellt wurde, dass es welche gibt. Ich greife mein Beispiel von weiter oben nochmal heraus und erweitere es:
Java:
public static void main(String[] args) {
    //[…]
    int anzahlSchnittpunkte = findeSchnittpunkteHeraus(a, b, c); //a, b und c musst du natuerlich vorher selbst festlegen
    System.out.println("Die Parabel hat " + anzahlSchnittpunkte + " Schnittpunkt(e).");
    if(anzahlSchnittpunkte != 0) {
        berechneSchnittpunkte();
    }
}
 

feiste

Bekanntes Mitglied
danke :)
habs jetzt geschafft.

Java:
System.out.println("Die Parabel hat " + AnzahlSchnittpunkte() + " Schnittpunkt(e) mit der X-Achse" );
if(AnzahlSchnittpunkte() == 2)
{System.out.println("X1: " + Schnittpunkt1());
System.out.println("X2: " + Schnittpunkt2());}
{if(AnzahlSchnittpunkte() == 1)
System.out.println("X: " + Schnittpunkt1() + " (Scheitel)");}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Parabel Java Basics - Anfänger-Themen 2
S Zeichnen einer Parabel (ax²+bx+c) Java Basics - Anfänger-Themen 6
T Unvollständige Daten in der TableView Java Basics - Anfänger-Themen 8
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
P Daten auslesen und in CSV speichern Java Basics - Anfänger-Themen 6
J Daten aus zweiter Klasse importieren Java Basics - Anfänger-Themen 33
C Daten speichern und laden Java Basics - Anfänger-Themen 6
S Je nach erhaltene Daten unterschiedlich reagieren (Design Pattern?) Java Basics - Anfänger-Themen 3
J Daten von einer PHP Datei ablesen Java Basics - Anfänger-Themen 1
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben