Java 著名的法伦海特到塞尔修斯的问题。。。有人能帮我解决这个问题吗
这是一个奇怪的问题: 因此,当我为Farenheit选择1时,它将提示我输入Farenheit值 然后,它将采用Farenheitocelcius方法。由于某种原因,塞尔修斯总是返回0.0 任何形式的帮助都将不胜感激Java 著名的法伦海特到塞尔修斯的问题。。。有人能帮我解决这个问题吗,java,Java,这是一个奇怪的问题: 因此,当我为Farenheit选择1时,它将提示我输入Farenheit值 然后,它将采用Farenheitocelcius方法。由于某种原因,塞尔修斯总是返回0.0 任何形式的帮助都将不胜感激 package Exercises; import java.util.Scanner; public class TemperatureCOnversion { public static void main(String[] args) { // TODO Au
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;
}
}
5/9可以,返回0。您需要将其中一个整数转换为双精度,如
double celcius = ((double)5/9)*(f -32);
或
这将首先将5转换为双精度,然后将此双精度除以9,这将给出正确的除法结果
在CelciusToFarenheit方法中,没有问题,因为在该行中:
double farenheit =( (9/5*c) + 32);
9/5*c计算为9/5*c,其中c是一个双精度数,因此5*c首先返回一个双精度数,然后将9除以这个双精度数。所以这里没有整数除法 5/9即可,返回0。您需要将其中一个整数转换为双精度,如
double celcius = ((double)5/9)*(f -32);
或
这将首先将5转换为双精度,然后将此双精度除以9,这将给出正确的除法结果
在CelciusToFarenheit方法中,没有问题,因为在该行中:
double farenheit =( (9/5*c) + 32);
9/5*c计算为9/5*c,其中c是一个双精度数,因此5*c首先返回一个双精度数,然后将9除以这个双精度数。所以这里没有整数除法 我认为5/9结果0两个数字都是整数–结果都是整数,用5.0/9.0或5d/9d替换它。我认为5/9结果0两个数字都是整数–结果都是整数,用5.0/9.0或5d/9d替换它。问题在于这一行:
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);
问题在于这一行:
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);
将5/9转换为双倍5/9。对9/5执行同样的操作表达式5/9是一个整数除法,并且始终为零。将5/9转换为双精度5/9。对9/5执行相同的操作表达式5/9是一个整数除法,并且始终为零。您也可以只写5d/9,这将更加平滑read@KevinEsche这只是意见的问题。对我来说,Double 5/9更容易阅读也许我更习惯于它你也可以只写5d/9,这样会更流畅read@KevinEsche这只是意见的问题。对我来说,5/9更容易阅读,也许我更习惯了