проблема с логикой оператора if-else или switch для преобразования температуры - PullRequest
0 голосов
/ 12 февраля 2019

У меня возникают проблемы с разрешением того, как принять входные данные на основе двух возможных опций, и возвращением значения для обоих опций.

пример:

Какую систему температур вы используете: по Цельсию илиФаренгейт

(после выбора, в данном случае по Цельсию, принять ответ и преобразовать в Фаренгейт)

Вывести обе температуры

Я пробовал 'если еще' и '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 голосов
/ 12 февраля 2019

Ваши расчеты верны.Если пользователь вводит градусы Цельсия, не конвертируйте его.Другими словами, temp в градусах Цельсия - это tempuratureInC, а не tempInCelsiusConvFromFahrenheit.

0 голосов
/ 12 февраля 2019

Если вы проследите свою программу, вы поймете:

1) Вы вводите значение в градусах Цельсия, поэтому ваша программа попадает в:

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 ° С.Таким образом, вывод правильный.

Но ваш дизайн кодирования неправильный.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...