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