这是一个奇怪的问题:
所以当我为Farenheit选择1时,它会提示我输入Farenheit值。
然后它将采用FarenHeitToCelcius方法。出于某种原因,celcius总是返回0.0
非常感谢任何形式的帮助
package Exercises;
import java.util.Scanner;
public class TemperatureCOnversion {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("Enter 1 to return Celcius or 2 for Farenheit: ");
System.out.println("Your CHOICE: ");
int choice = input.nextInt();
switch(choice){
case 1:
System.out.println("Enter the Fareheit for celcius calculation: ");
double farenheit = input.nextDouble();
System.out.println(farenheit);
double celcius_result = FarenHeitToCelcius(farenheit);
System.out.println(celcius_result);
break;
case 2:
System.out.println("Enter the Celcius for Farenheit calculation: ");
double celcius1 = input.nextDouble();
double farenheit_result = CelciusToFarenheit(celcius1);
break;
default:
System.out.println(" **********Invalid Entry ******");
break;
}
}
public static double FarenHeitToCelcius(double f){
//double celcius = 0;
double celcius = (5/9)*(f -32);
System.out.println(" The equivalent celcius temperature is: " + celcius);
return celcius;
}
public static double CelciusToFarenheit(double c){
double farenheit =( (9/5*c) + 32);
System.out.println(" The equivalent fareheit temperature is: " + farenheit);
return farenheit;
}
}
答案 0 :(得分:4)
5/9
将执行integer division,返回0.您需要将其中一个整数转换为加倍,例如
double celcius = ((double)5/9)*(f -32);
或
double celcius = (5.0/9)*(f -32);
这将首先将5转换为double,然后将此double除以9,这将得到正确的除法结果。
在CelciusToFarenheit
方法中,没有问题,因为,在行中:
double farenheit =( (9/5*c) + 32);
9/5*c
被评估为9/(5*c)
,其中c
是双精度,因此5*c
首先返回一个double,然后将9分为此double。所以那里没有整数除法。
答案 1 :(得分:1)
我认为(5/9)
结果为0
(两个数字都是整数 - 结果为整数),请将其替换为(5.0 / 9.0)
或(5d / 9d)
。
答案 2 :(得分:0)
问题出在这一行:
double celcius = (5/9)*(f -32);
5/9将被解释为int 5 / int 9 - 它将始终返回0,因为9确实适合5 0次。
因为你想用double操作,这可以工作:
double celcius = (5.0 / 9.0) * (f - 32);