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

时间:2019-02-12 17:51:32

标签: java logic

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

示例:

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

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

同时输出两个温度

我已经尝试过'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 个答案:

答案 0 :(得分:1)

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

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。因此输出正确。

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

我希望这会有所帮助。

答案 1 :(得分:1)

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