Fahrenheit/Celsius Converter funktioniert nicht

OneIntoxicatedPanda

Neues Mitglied
Hallo, ich bin dabei, einen kleinen Temperaturumrechner zu programmieren, der mit Double-werten arbeitet und auf eine Nachkommastelle gerundet ausgibt.
Jedoch sind die Werte nicht richtig. Hat jemand eine Idee warum?
Bin am verzweifeln.


import java.util.Scanner;
public class UmrechnerFC {

public static void main(String[] args) {
System.out.println("Ausgangsmaß? 1 für Fahrenheit, 2 für Celsius.");
int wahl;

Scanner einsOderZwei = new Scanner(System.in);
wahl = einsOderZwei.nextInt();


switch (wahl){

case 1:{
System.out.println("Wie viel Grad Fahrenheit sind es?");
double input;
Scanner scan = new Scanner(System.in);
input=scan.nextDouble();
double celsius = ((input-32)*(5/9));
// celsius = Math.round(celsius*10)/10.0;
System.out.printf("Das sind %f Grad Celsius", celsius);


break;
}

case 2:{
System.out.println("Wie viel Grad Celsius sind es?");
double input;
Scanner scan = new Scanner(System.in);
input=scan.nextDouble();
double fahrenheit = (input*9)/5 +32;
//fahrenheit = Math.round(fahrenheit*10)/10.0;
System.out.printf("Das sind %.1f Grad Fahrenheit", fahrenheit);
//System.out.println(fahrenheit);

break;
}
default: {
System.out.println("ERROR: Eingabe nicht 1 oder 2");
break;
}
}
}
}
 

Robat

Top Contributor
Nächstes mal bitte Code in [code=Java]MY CODE[/code] Tags. So kann man ihn besser lesen :)


Hab mir deine Umrechnung jetzt nicht genau angesehen aber was auffällt, ist die Integerdivision, die an den folgenden beiden Stellen ausgeführt wird:
Java:
// hier kommt bei 5/9 immer 0 raus, du erwartest aber den Wert 0,5555
// Das liegt daran, dass hier 1 Int-Wert durch einen anderen Int-Wert gerechnet wird. Das wird immer abgerundet.
double celsius = ((input-32)*(5/9));

// Mit der selben Begründung kommt hier bei (input*9)/5 immer ein abgerundeter Wert heraus.
double fahrenheit = (input*9)/5 +32;

Deshalb einen der beiden Werte einfach zu einem double machen.
Das machst du bspw. indem du ein Punkt hinter die Zahl schreibst:
Java:
double result = 9/5.;

Gruß Robert
 

Ähnliche Java Themen

Neue Themen


Oben