用于温度转换的'if-else'或'switch'语句的逻辑问题

问题描述 投票:-1回答:2

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

例:

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

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

输出两个温度

我试过'if else'和'switch'语句但是当我做出选择时说Celsius会转换它们

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°

java logic
2个回答
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℃。所以输出是正确的。

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

我希望这有帮助。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.