# Einfache Methoden in Java



## Wang (26. Nov 2009)

Hallo! 
Ich möchte Euch um eine Durchsicht meiner Lösung bitten, damit ich weiß, ob ich auf dem richtigen Pfad bin. Zunächst die Aufgabe:







Meine Lösung:


```
/**
 *  Umrechnung von Celsius in Fahrenheit
 */
public static double celsius2fahrenheit(double temp)
{
    return (temp * 9 / 5.0) + 32;
}



/**
 *  Bestimmung des BMI (Body-Mass-Index)
 */
public static double bmi(double gewicht, double groesse)
{
    return (gewicht/(Math.pow(groesse,2));
}
```

Ich bin offen für jede Art von Kritik. 
Vielen Dank.


----------



## javimka (26. Nov 2009)

Ich glaube, das hast du alles richtig gemacht. Die Methode heisst zwar celsius2fahrenheit statt fahrenheit, wie in der Aufgabe gefordert, aber du kriegst sicher die richtigen Resultate.


----------



## Wang (26. Nov 2009)

javimka hat gesagt.:


> Ich glaube, das hast du alles richtig gemacht. Die Methode heisst zwar celsius2fahrenheit statt fahrenheit, wie in der Aufgabe gefordert, aber du kriegst sicher die richtigen Resultate.



Danke, javimka.
Ich habe die Methode vorsichtshalber in fahrenheit umbenannt - sicher ist sicher.


----------



## Final_Striker (26. Nov 2009)

vielleicht wäre runden noch sinnvoll, ist ja aber nicht gefordert. ansonsten ist die lösung in ordnung, die aufgabe was ja auch nicht sooo extrem schwer. ;-)


----------



## Wang (26. Nov 2009)

Eine Sache habe ich selbst gesehen... es fehlt wohl eine Klammer am Ende:


```
return (gewicht/(Math.pow(groesse,2))[B])[/B];
```


----------



## Gonzo17 (26. Nov 2009)

Ich hab mich eigentlich nur gefragt, wieso du statt 5.0 nicht einfach 5 schreibst. Ansonsten siehts gut aus.


----------



## Wang (26. Nov 2009)

Gonzo17 hat gesagt.:


> Ich hab mich eigentlich nur gefragt, wieso du statt 5.0 nicht einfach 5 schreibst. Ansonsten siehts gut aus.



Danke. 
Ich war mir ehrlich gesagt nicht ganz sicher, ob ich 5 schreiben darf oder 5.0 (wegen double) schreiben muss...


----------



## Marco13 (26. Nov 2009)

Da hat jemand neulich schonmal danach gefragt: http://www.java-forum.org/hausaufgaben/92016-typkonvertierung-2.html#post583768 

Also eine kleine Ergänzungs- oder Sonderaufgabe zu a) :
Bei 
double temp;
Welchen Typ hat dann folgender Ausdruck:
temp * 9 / 5

( :joke: )

EDIT: Aber wo ich schonmal hier bin, ein kleiner (etwas ersnthafterer) Nachtrag: Es ist zwar in 99.9% der Fälle egal, aber statt pow(x,2) ist meistens ein x*x effizienter - und auch nicht weniger lesbar.


----------



## Wang (27. Nov 2009)

Marco13 hat gesagt.:


> Da hat jemand neulich schonmal danach gefragt: http://www.java-forum.org/hausaufgaben/92016-typkonvertierung-2.html#post583768
> 
> Also eine kleine Ergänzungs- oder Sonderaufgabe zu a) :
> Bei
> ...



Hmm... wer hat da wohl danach gefragt? :bahnhof:

Der Ausdruck ist dann vom Typ double, also darf ich neben 5.0 auch 5 schreiben. 



Marco13 hat gesagt.:


> EDIT: Aber wo ich schonmal hier bin, ein kleiner (etwas ersnthafterer) Nachtrag: Es ist zwar in 99.9% der Fälle egal, aber statt pow(x,2) ist meistens ein x*x effizienter - und auch nicht weniger lesbar.



Würde das dann so aussehen?


```
return (gewicht/(groesse*groesse));
```

Nochmal ein dickes Danke an Dich, Marco13 für Deinen starken Einsatz. 


EDIT:
Ich denke wohl zu mathematisch...
So müsste es doch auch korrekt sein?


```
return (gewicht/groesse*groesse);
```


----------



## Marco13 (28. Nov 2009)

Geht beides... ersteres ist vielleicht etwas "intuitiver"...


----------



## Milo (28. Nov 2009)

Hallo,



Marco13 hat gesagt.:


> Geht beides... ersteres ist vielleicht etwas "intuitiver"...




```
return (gewicht/groesse*groesse);
```

und


```
return (gewicht/(groesse*groesse));
```

ist aber schon was anderes. Ersteres müsste wie folgt lauten:


```
return (gewicht/groesse/groesse);
```

Gruß Micha


----------



## Marco13 (28. Nov 2009)

Uff... gut, dass ich das auf die fortgeschrittene Uhrzeit schieben kann


----------



## Wang (28. Nov 2009)

Ich fürchte, jetzt komme ich nicht ganz mit... 

Für die eigentliche Aufgabe ist das hier dann richtig?


```
return (gewicht/(groesse*groesse));
```

Was genau hat Milo aber gemeint...?


----------



## Marco13 (28. Nov 2009)

return (gewicht/(groesse*groesse));

ist richtig, aber

return (gewicht/groesse*groesse);
würde so viel bedeuten wie
return ((gewicht/groesse)*groesse);
und das wäre was anderes.

Wenn man das richtige
return (gewicht/(groesse*groesse));
OHNE Klammern schreiben wollte, müßte man
return (gewicht/groesse/groesse);
schreiben, aber da wäre IMHO nicht mehr so einfach zu erkennen, was die eigentliche Formel ist...


----------

