Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java '的逻辑有问题;否则';或';开关';温度转换语句_Java_Logic - Fatal编程技术网

Java '的逻辑有问题;否则';或';开关';温度转换语句

Java '的逻辑有问题;否则';或';开关';温度转换语句,java,logic,Java,Logic,我在解决如何基于两个可能选项获取输入并返回两个选项的值时遇到问题 例如: 你使用什么温度系统:摄氏还是华氏 (选择后,在本例中为摄氏度,取答案并转换为华氏度) 输出两种温度 我尝试了“if-else”和“switch”语句,但当我进行选择时,它会同时转换这两个语句 System.out.println("Select which temperature scale you currently use, (c)elsius or (f)ahrenheit: "); temperatureScale

我在解决如何基于两个可能选项获取输入并返回两个选项的值时遇到问题

例如:

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

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

输出两种温度

我尝试了“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.777 8°
温度为华氏: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

温度inf
为0,0°F=-17.78°C,因此计算是正确的。它确实有帮助。最后,我将输出添加到“if”和“else”中。