我无法解决如何根据两个可能的选项获取输入并为两个选项返回值。
例:
你使用什么温度系统:摄氏或华氏温度
(选择完成后,在这种情况下,摄氏,回答并转换为华氏温度)
输出两个温度
我试过'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°
如果您追踪您的计划,您将理解:
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℃。所以输出是正确的。
但是你的编码设计是错误的。
我希望这有帮助。
你的计算是正确的。如果用户输入摄氏度,请不要转换它。换句话说,摄氏温度是tempuratureInC而不是tempInCelsiusConvFromFahrenheit。