为了账号安全,请及时绑定邮箱和手机立即绑定

温度转换的“if-else”或“switch”语句的逻辑问题

温度转换的“if-else”或“switch”语句的逻辑问题

Qyouu 2022-06-15 16:35:43
我无法解决如何根据两个可能的选项获取输入并为这两个选项返回一个值。例子:您使用什么温度系统:摄氏度或华氏度(做出选择后,在本例中为摄氏度,取答案并转换为华氏度)输出两个温度我试过“if else”和“switch”语句,但是当我选择摄氏度时,它会同时转换System.out.println("Select which temperature scale you currently use, (c)elsius or (f)ahrenheit: ");temperatureScale = scannerIn.next();System.out.println("Temp in C is: " + temperatureInC);     */if (temperatureScale.equals("c")) {System.out.println("Please enter the temperature in Celsius: ");temperatureInC = scannerIn.nextDouble();}else {System.out.println("Please enter the temperature in Fahrenheit: ");temperatureInF = scannerIn.nextDouble();}tempInCelsiusConvFromFahrenheit = (temperatureInF - 32) * 5/9;tempInFahrenheitConvFromCelsius = (temperatureInC * 9/5) + 32;averageQuizScore = ((quiz1 + quiz2 + quiz3)/3);System.out.println("*** Thank You ***");System.out.println("Student EMPLID:" + studentID);System.out.println("Quiz 1 Score: " + quiz1);System.out.println("Quiz 2 Score: " + quiz2);System.out.println("Quiz 3 Score: " + quiz3);System.out.println("Average quiz score: " + df2.format(averageQuizScore));System.out.println("Age in months: " + age * 12);System.out.println("Age in years: " + age);System.out.println("Temperature in Celsius: " +   tempInCelsiusConvFromFahrenheit + '°'); System.out.println("Temperature is Fahrenheit: " + tempInFahrenheitConvFromCelsius + '°');}}我选择摄氏度并输入 32。我以为我会得到 32 C 和 91.4 但我得到: 摄氏温度:-17.77777777777778° 温度是华氏温度:91.4°
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

如果你跟踪你的程序,你会明白:


1)您为摄氏度输入一个值,因此您的程序属于:


if (temperatureScale.equals("c")) {

    System.out.println("Please enter the temperature in Celsius: ");

    temperatureInC = scannerIn.nextDouble();

}

然后您尝试通过以下方式显示以摄氏度为单位的温度值:


System.out.println("Temperature in Celsius: " +   tempInCelsiusConvFromFahrenheit + '°');

并且您尝试通过获取tempInCelsiusConvFromFahrenheit 变量的值来做到这一点。


但是,您尝试tempInCelsiusConvFromFahrenheit用一个值填充变量


tempInCelsiusConvFromFahrenheit = (temperatureInF - 32) * 5/9;

并且您尝试在从未进入过的“其他块”中获取此值:


else {

     System.out.println("Please enter the temperature in Fahrenheit: ");

     temperatureInF = scannerIn.nextDouble();

}

但你永远不会进入那里。所以当你声明它时它可能被初始化为0。(0-32)*5/9 = -17.78°C。所以输出是正确的。


但是您的编码设计是错误的。


我希望这有帮助。


查看完整回答
反对 回复 2022-06-15
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

你的计算是正确的。如果用户输入摄氏度,请不要转换它。换句话说,摄氏温度是 tempuratureInC 而不是 tempInCelsiusConvFromFahrenheit。



查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信