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

我无法解决如何根据两个可能的选项获取输入并为这两个选项返回一个值。


例子:


您使用什么温度系统:摄氏度或华氏度


(做出选择后,在本例中为摄氏度,取答案并转换为华氏度)


输出两个温度


我试过“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°


Qyouu
浏览 273回答 2
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。所以输出是正确的。但是您的编码设计是错误的。我希望这有帮助。

侃侃尔雅

你的计算是正确的。如果用户输入摄氏度,请不要转换它。换句话说,摄氏温度是 tempuratureInC 而不是 tempInCelsiusConvFromFahrenheit。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java