Java Programm Temperatur konverter?

4 Antworten

Von Grad Celsius in Grad Fahrenheit umrechnen (Java)



public static void convert(double celsius) {
    double fahrenheit = celsius * 1.8 + 32; // Man rechnet die Formel hier
    System.out.println(celsius + "°C sind " + fahrenheit + "°F");
}

Ich hoffe, dass ich dir helfen konnte, es war eigentlich ganz einfach. Die Formel wird einfach in Zeile 2 des Programmes ausgerechnet.

Von Grad Fahrenheit in Grad Celsius umrechnen (Java)



public static void convert(double fahrenheit) {
    double celsius = (fahrenheit - 32) * 5 / 9;
    System.out.println(fahrenheit + "°F sind " + celsius + "°C");
}
Woher ich das weiß:Hobby – Ich programmiere seit 2 Jahren

Du möchtest mathematische Berechnungen mit Fließkommazahlen vornehmen. Daraus sollte sich schlussfolgern lassen, dass double besser als String geeignet wäre.

Ich würde empfehlen, zuerst den mathematischen Lösungsweg zu formulieren (Wie berechnet man die Temperatur in Celsius aus einem Wert in Fahrenheit und andersherum?). Danach kann man sich der Implementation in Java widmen. Dies sollte im Kern nur noch Übersetzungsarbeit darstellen. Falls notwendig, können Methoden der Math-Klasse bei den Berechnungen unterstützen.

BieneBienesummm 
Fragesteller
 23.02.2021, 22:59

ich habe das hier geschrieben für "konvertiereFahrenheit". Ist daran irgendetwas falsch?

double konvertiereFahrenheit(double temperatur, double rueckgabe) {

       rueckgabe = (temperatur * 9/5) + 32;

       return rueckgabe;  }

0
BeamerBen  23.02.2021, 23:04
@BieneBienesummm

rückgabe als Inputparameter ergibt erst mal keinen Sinn, du könntest einfach direkt das Ergebnis returnen statt eine Variable zu verwenden oder die variable im Methoden body zu deklarieren.

Nicht sicher ob die Gleichung richtig ist aber der Code scheint an sich zu stimmen.

0
regex9  23.02.2021, 23:06
@BieneBienesummm

Der zweite Parameter sollte kein Parameter sein. Lege die Variable in der Methode an.

double konvertiereFahrenheit(double temperatur)
{
  double rueckgabe = (temperatur * 9/5) + 32;
  return rueckgabe;
}

Beachte zudem, dass 9/5 eine Ganzzahl zurückgibt. Da Divisor und Dividend beides Ganzzahlen sind, wird die Nachkommastelle vom Ergebnis auch abgetrennt. Mindestens eine von beiden Zahlen sollte eine Fließkommazahl sein.

double rueckgabe = (temperatur * 9/5d) + 32;
0

Bei der Aufgabe steht doch sogar dabei, welche Datentypen du nehmen sollst. Der Parameter und die Rückgabe sollen beide double sein. Die Umrechnung findest du bei Google.

private double konvertiereCelsius(double celsius) {
	return celsius * 9.0 / 5.0 + 32.0;
}

private double konvertiereFahrenheit(double fahrenheit) {
	return (fahrenheit - 32.0) * 5.0 / 9.0;
}

Das ist ja wilder Code… dieses boolean richtung finde ich nicht sehr schön. Zwei Methoden zu haben, jeweils für jeden Typ eine ist sauberer. Boolean flags in eine Methode zu passen die das Verhalten dieser bestimmte würde ich vermeiden.

Double oder float wären beide okay. Ich weiß nicht ob du damit Probleme hast aber um ein literal als float zu kennzeichnen kannst du ein f hinter die Zahl schreiben. Wichtig ist natürlich durchgehend den selben Typ zu verwenden.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
BieneBienesummm 
Fragesteller
 23.02.2021, 22:56

Das Programm, das ich beigefügt habe, wurde mir vorgegeben. Wenn ich es für mich machen würde, hätte ich es anders geschrieben. Ich weiß dass es einfacher geht, aber ich muss die Vorgabe quasi fertig schreiben.

0
BeamerBen  23.02.2021, 22:59
@BieneBienesummm

Ohh das ist ja furchtbar, das Problem ist halt nicht mal das es einfach geht, sondern das es einfach schlechtes Design ist. Der Code wirkt wie von jemanden der nie wirklich außerhalb der Theorie programmiert hat.

0
BieneBienesummm 
Fragesteller
 23.02.2021, 23:03
@BeamerBen

Ja, das hilft mir aber auch nicht weiter. Trotzdem danke für deine Mühe

0