Java 使用3种方法将摄氏温度转换为华氏温度,并将华氏温度转换为摄氏温度

Java 使用3种方法将摄氏温度转换为华氏温度,并将华氏温度转换为摄氏温度,java,Java,我的任务是制作一个简单的摄氏到华氏或华氏到摄氏的转换器。我的实验室老师教了我很多,但在解释方面做得不好。我知道它的大部分功能和交互方式,代码有0个错误,但没有正确地进行转换。我将发布代码,并对我不理解的部分进行注释,但我真正需要的是有人解释我不理解的部分,修复脚本以使其正确执行将非常棒。我将对我不理解的部分进行评论 import java.util.Scanner; public class ExerciseOne { public static void main( String[]

我的任务是制作一个简单的摄氏到华氏或华氏到摄氏的转换器。我的实验室老师教了我很多,但在解释方面做得不好。我知道它的大部分功能和交互方式,代码有0个错误,但没有正确地进行转换。我将发布代码,并对我不理解的部分进行注释,但我真正需要的是有人解释我不理解的部分,修复脚本以使其正确执行将非常棒。我将对我不理解的部分进行评论

 import java.util.Scanner;

 public class ExerciseOne
 {
public static void main( String[] args ) 
{

    int choice;


    System.out.println( "What would you like to do? \n 1 - Fahnrenheit to Celsius \n 2 - Celsius to Fahrenheit \n 3 - Quit" );
    Scanner dylan = new Scanner(System.in);
    choice = dylan.nextInt();



    if (choice == 1) 
    {
        System.out.println( "What number do you want to convert to Celsius?" );
        float input = dylan.nextFloat();
        float output = ftoC(input);        // I'm kind of confused as to why she told me to put the variable inside of the ();      
        System.out.println(ftoC(input)); //Same here with the variables :(


    }

    if (choice == 2)
    {
        System.out.println( "What number do you want to convert to Fahrenheit?" );
        float input = dylan.nextFloat();
        float output = ctoF(input);
        System.out.println(ctoF(output));
    }

    if (choice == 3) 
    {
        System.out.println( "Exiting application.");
    }

}

public static float ftoC(float f)  //This is a method line, but why is float f inside the parenthesis?
{
    float celsius = (f-32)*(5/9); 
    return celsius;
}

public static float ctoF(float c) //Same thing goes for here
{
    float fahrenheit = (c)*(9/5) + 32;
    return fahrenheit;
}
}

这样您就可以将变量传递给函数
ftoC

System.out.println(ftoC(input)); //Same here with the variables :(
同上。否则数据将如何到达函数或方法

publicstaticfloatftoc(floatf)//这是一个方法行,但为什么floatf在括号内?

因为您必须告诉程序您的数据类型,以便它知道如何在内存中布局它。否则,它不知道您希望数据类型在内存中的大小。此外,如果要将
int
传递给一个需要
浮点值的方法,程序将显示不同的行为

这样您就可以将变量传递给函数
ftoC

System.out.println(ftoC(input)); //Same here with the variables :(
同上。否则数据将如何到达函数或方法

publicstaticfloatftoc(floatf)//这是一个方法行,但为什么floatf在括号内?


因为您必须告诉程序您的数据类型,以便它知道如何在内存中布局它。否则,它不知道您希望数据类型在内存中的大小。此外,如果要将
int
传递给一个需要
float
的方法,程序将表现出不同的行为。

对于初学者来说,这并不能实现您所期望的:

(f-32)*(5/9); 
5/9作为整数除法执行,因此等于0。任何乘以0的值都是0。 您需要将5和/或9转换为浮动:

(f-32)*(5f/9f); 

首先,这并没有达到您的预期:

(f-32)*(5/9); 
5/9作为整数除法执行,因此等于0。任何乘以0的值都是0。 您需要将5和/或9转换为浮动:

(f-32)*(5f/9f); 

一次只回答一个问题

float output = ftoC(input); // I'm kind of confused as to why she told me to 
将变量放在()的内部

这里的
ftoC
是一个方法,并且
input
被传递给它

System.out.println(ftoC(input)); //Same here with the variables :(
您正在再次调用该方法。无意义的只需打印上一次调用的结果:

System.out.println(output);
此外,我将更改这些行:

float input = dylan.nextFloat();
float output = ftoC(input);
System.out.println(output); 
只是:

System.out.println(ftoC(dylan.nextFloat())); 
您不需要这些局部变量,只需将每个返回值直接传递到下一个方法


参数(如果有)在括号中声明为类型,后跟参数名。这里我们有一个名为
f


但是有几个bug。在java中,整数除法产生整数结果,这意味着截断非整数部分,因此
5/9
int
0
。但要修复它,只需拆下支架!:

public static float ftoC(float f) {
    return (f-32)*5/9; 
}
通过去掉括号,问题得到了解决,因为在java中,如果一个操作数是
float
,另一个是
int
,则结果是
float
。此计算首先从
浮点值中减去
int
——得到
浮点值。然后它乘以
int
5
——得到一个
浮点值。然后除以
int
9
——得到一个
浮点值


还要注意的是,我没有处理局部变量,只是返回计算结果。代码越少越好。

一次只回答一个问题

float output = ftoC(input); // I'm kind of confused as to why she told me to 
将变量放在()的内部

这里的
ftoC
是一个方法,并且
input
被传递给它

System.out.println(ftoC(input)); //Same here with the variables :(
您正在再次调用该方法。无意义的只需打印上一次调用的结果:

System.out.println(output);
此外,我将更改这些行:

float input = dylan.nextFloat();
float output = ftoC(input);
System.out.println(output); 
只是:

System.out.println(ftoC(dylan.nextFloat())); 
您不需要这些局部变量,只需将每个返回值直接传递到下一个方法


参数(如果有)在括号中声明为类型,后跟参数名。这里我们有一个名为
f


但是有几个bug。在java中,整数除法产生整数结果,这意味着截断非整数部分,因此
5/9
int
0
。但要修复它,只需拆下支架!:

public static float ftoC(float f) {
    return (f-32)*5/9; 
}
通过去掉括号,问题得到了解决,因为在java中,如果一个操作数是
float
,另一个是
int
,则结果是
float
。此计算首先从
浮点值中减去
int
——得到
浮点值。然后它乘以
int
5
——得到一个
浮点值。然后除以
int
9
——得到一个
浮点值


还要注意的是,我没有处理局部变量,只是返回计算结果。代码越少越好。

你需要把
5/9
设为浮点数或双精度,形成“真正的除法”,就像你在学校学到的那样。否则,Java将删除剩余部分(即分数)。有时,结果会是0。你需要将
5/9
设为浮点或双精度,以形成“真正的除法”,就像你在学校学到的那样。否则,Java将删除剩余部分(即分数)。有时,结果会是0。解决方案实际上比这更简单:)这解决了华氏温度到摄氏温度的问题!但出于某种奇怪的原因,摄氏度到华氏度的公式计算不正确。浮动华氏温度=(9/5)*c)+32;当我输入20的时候应该是68,但它给了我84。(9/5)*20=36,36+32=68,但由于某种原因,我得到了84。@user3304333:删除
9/5
周围的括号。。。实际上删除所有括号。你不知道吗