当前位置: 代码迷 >> java >> 温度转换的“ if-else”或“ switch”语句逻辑出现问题
  详细解决方案

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

热度:75   发布时间:2023-07-26 14:51:24.0

我在解决如何根据两个可能的选项进行输入以及为这两个选项返回值时遇到麻烦。

例:

您使用哪种温度系统:摄氏或华氏温度

(选择后,在这种情况下为摄氏,请回答并转换为华氏度)

输出两个温度

我已经尝试过'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摄氏度和91.4,但我得到了:摄氏温度:-17.77777777777778°温度是华氏度:91.4°

如果您跟踪程序,您将了解:

1)您输入的是Celcius的值,因此您的程序属于:

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 Block”中获得从未使用过的值:

else {
     System.out.println("Please enter the temperature in Fahrenheit: ");
     temperatureInF = scannerIn.nextDouble();
}

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

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

我希望这有帮助。

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

  相关解决方案