Programm um funktion zuberechnen

Hünker

Mitglied
Hallo,
ich soll dieses programm programmieren:

Ein Programm soll für Funktionen Berechnungen durchführen.
Gegeben sind die Funktionen f1(x) := x^2 + 7^x + 3 und f2(x) := 1/
3x^3 + 12x^2 - 3^x + 16.
Erst soll eine Variable x vom Typ float erstellt werden. Diese Variable erhält den
Wert, der beim Programmstart als Argument in der Konsole übergeben wird.
Dann soll eine double-Variable f1 erstellt werden. In diese Variable wird die Lösung
von f1(x) mit der Variablen x gespeichert.
Analog für eine double-Variable f2.
Runden Sie nun die Werte f1 und f2 auf 4 Nachkommastellen genau. Nutzen Sie
kaufmännisches Runden.
Geben Sie die Werte von f1 und f2 aus.
Die Ausgaben sollen mit dem System.out.println Befehl erfolgen.
Das Programm soll MathFunction heissen.

bisher habe ich das:

Java:
ackage grundlagenuebungen;

/**
 *
 * 
 */
public class MathFunction {
    

public static void main(String[] args) {

    


float x = Float.parseFloat (args[0]);

double f1 ;

double f2 ;

double Resultf1 = (x*x)+(7*x)+3;

double Resultf2 = (1/3*x*x*x) + (12*x*x)- (3*x)+16;


System.out.println (Math.round(Resultf1));
System.out.println (Math.round(Resultf2));

     }
   }

das problem ist ich hab keine Ahnung wie man 1. potenzen in java berechnet 2. muss ich ja von string auf float am anfang umwandeln aber irgendwie klappts nich..

hoffe könntet mir helfen bzw tipps geben :)
 
G

Gast2

Gast
1. potenzen in java berechnet
Schau dir mal die Klasse Math an, speziell Math#pow

2. muss ich ja von string auf float am anfang umwandeln aber irgendwie klappts nich..
"irgendwie klappts nich" ist keine besonders hilfreiche Fehlermeldung ;) Startest du dein Programm mit Parametern? Du erwartest in deinem Quellcode ja einen.
 

Hünker

Mitglied
ok math.pow guck ich mir gleich an :)

also ich mach das mit netbeans halt und mach das über run file...als parameter hab ich

Java:
float x = Float.parseFloat (args[23]);

genommen. Hoffe das meinst du mit Parameter, weil in der Aufgabe ist ja nichts mit Eingabefenster oder ähnlichem gemeint habe es dann so verstanden...hoffe ist richtig...ist den die konvertierung richtig also von string in float? und muss ich auch die beiden doubles konvertieren vorher?
 
G

Gast2

Gast
Hoffe das meinst du mit Parameter, weil in der Aufgabe ist ja nichts mit Eingabefenster oder ähnlichem gemeint habe es dann so verstanden
Nein, ich meine Programm Argumente die du beim start übergibst. Wenn du schreibst args[0], dann sprichst du den ersten übergabeparameter an:
java MathFunction 1.23
Das kannst du sicherlich auch irgendwo in Netbeans konfigurieren.

ist den die konvertierung richtig also von string in float? und muss ich auch die beiden doubles konvertieren vorher?
Die beiden doubles benutzt du doch in deinem Programm gar nicht?
 

Fab1

Top Contributor
kleinere Datentypen passen in größere rein.

double passt in float

und int passt in long rein :)

In Java von Kopf bis Fuß hat man das mit Elefanten gelernt :toll::toll:
 

Hünker

Mitglied
also ich hab das jetzt überarbeitet: nur verstehe ich noch das mit dem übergabe parameter nicht wo ich das hineinschreiben soll und/oder ob irgend noch was fehlt? :S

Java:
/*
 * 
 */
package grundlagenuebungen;

/**
 *
 * 
 */
public class MathFunction {
    

public static void main(String[] args) {

    


float x ;

double f1 ;

double f2 ;

double Resultf1 = Math.pow(x.,2.) + 7 * x + 3;
double Resultf2 = 1/3 * Math.pow(x.,2.)+ 12 * Math.pow(x.,2) - 3 * x + 16; 




System.out.println (Math.round(Resultf1));
System.out.println (Math.round(Resultf2));

     }
   }
 

Hünker

Mitglied
Hallo,
habe es nochmal überarbeitet
das problem ist nur bei f1 kommt das richtige ergebnis raus nur bei f2 noch nicht! könnte einer mir den fehler finden? und ich weiß das es unschön aussieht mit (x*x*x) wäre besser mit Math.pow aber habs irgendwie damit nich hinbekommen -.-

Java:
/*
 * 
 */
package grundlagenuebungen;

/**
 *
 * @author 
 */
public class MathFunction {
    

public static void main(String[] args) {

  float x = Float.parseFloat (args [0]); 

  

double f1 ;

f1 = x*x + 7*x + 3;

double f2 ;

f2 = 1/3*(x*x*x) + 12*(x*x) - 3*x + 16;

       




System.out.println (Math.round(f1 * 10000.0)/ 10000.0);
System.out.println (Math.round(f2 * 10000.0)/ 10000.0);


     }
   }

und ansonsten fehlt mir irgendwas noch was inder Aufgabenstellung steht oder habe ich alles drinne was sein sollte?

danke im vorraus!
 

Hünker

Mitglied
so ich hoffe hab es gechastet, komme zumindest aufs richtige ergebnis :)

Java:
public static void main(String[] args) {

  float x = Float.parseFloat (args [0]); 

  

double f1 ;

f1 = Math.pow(x,2) + 7*x + 3;

double f2 ;

f2 = (1/3f)*Math.pow(x,3) + 12*Math.pow(x,2) - 3*x + 16;

       




System.out.println (Math.round(f1 * 10000.0)/ 10000.0);
System.out.println (Math.round(f2 * 10000.0)/ 10000.0);


     }
   }
 

Hünker

Mitglied
die aufgabe war ja so:
Erst soll eine Variable x vom Typ float erstellt werden. Diese Variable erhält den
Wert, der beim Programmstart als Argument in der Konsole übergeben wird.
Dann soll eine double-Variable f1 erstellt werden. In diese Variable wird die Lösung
von f1(x) mit der Variablen x gespeichert.
Analog für eine double-Variable f2.
Runden Sie nun die Werte f1 und f2 auf 4 Nachkommastellen genau. Nutzen Sie
kaufmännisches Runden.
Geben Sie die Werte von f1 und f2 aus.
Die Ausgaben sollen mit dem System.out.println Befehl erfolgen.

kann mir einer von euch sagen ob ich jetzt alle punkte erfülle? vorallem weiß ich nicht ob ich die double variablen f1 und f2 gespeichert habe?
 

Fahoz

Mitglied
Hallo,

was bedeutet in diesem Zusammenhang die Fehlermeldung

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at grundlagenuebung.MathFunction.main(MathFunction.java:9)

betrifft im NetBean-Programm Zeile 9 bzw diesem Part -> float x = Float.parseFloat (args []);

lieben gruß
 
G

Gast2

Gast
http://docs.oracle.com/javase/6/docs/api/java/lang/IndexOutOfBoundsException.html hat gesagt.:
Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out of range.
Auf gut Deutsch: Den Index 2 gibt es in deinem Array nicht.
 

Fahoz

Mitglied
in wie fern kann man diesen Fehler beheben, bzw den Array erweitern / passend machen?
Liegt der Fehler in dieser Zeile? float x = Float.parseFloat (args []); ?
Lieben Gruß
 
G

Gast2

Gast
Java:
float x = Float.parseFloat (args []);
Da fehlt schonmal nen index bei dem args Array. Vermutlich meinst du da args[0]. args enthält die Argumente die du bei deinem Programmstart übergibst.
Code:
java MathFunction 5.7
In diesem Fall wäre args[0] 5.7, dass du dann auf Float casten kannst. Wo du die Argumente die beim Start übergeben bei Netbeans angibst musst du mal schauen, das weiß ich nicht.
 

Javafreak192

Mitglied
so ich hoffe hab es gechastet, komme zumindest aufs richtige ergebnis :)

Java:
public static void main(String[] args) {

  float x = Float.parseFloat (args [0]); 

  

double f1 ;

f1 = Math.pow(x,2) + 7*x + 3;

double f2 ;

f2 = (1/3f)*Math.pow(x,3) + 12*Math.pow(x,2) - 3*x + 16;

       




System.out.println (Math.round(f1 * 10000.0)/ 10000.0);
System.out.println (Math.round(f2 * 10000.0)/ 10000.0);


     }
   }

Kann mir mal jemand sagen warum man System.out.println (Math.round(f1 * 10000.0)/ 10000.0) rechnet und damit auf 4 Nachkommastellen kommt? Außerdem verstehe ich nicht warum man bei f2 (1/3f) schreibt. Warum f?
 

Fahoz

Mitglied
okay das hat soweit geklappt dankeschön. ja ist args 0

er spuckt mir die richtigen Ergebnisse aus. Ist das casten auf float nötig bzw gemäß der Aufgabe wichtig?
 
S

SlaterB

Gast
@Javafreak192
Multiplikation, Runden, Division rundet auf bestimmte Nachkommastellen,

f steht für float, sonst wird nur int/int ganzzahlig gerechnet
 

Neue Themen


Oben