Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 著名的法伦海特到塞尔修斯的问题。。。有人能帮我解决这个问题吗_Java - Fatal编程技术网

Java 著名的法伦海特到塞尔修斯的问题。。。有人能帮我解决这个问题吗

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

这是一个奇怪的问题:

因此,当我为Farenheit选择1时,它将提示我输入Farenheit值

然后,它将采用Farenheitocelcius方法。由于某种原因,塞尔修斯总是返回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;
  }


}
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更容易阅读,也许我更习惯了