В вашей программе было две проблемы:
- Не назначено
static char c='c'
и static char f='f'
- Не создано
keyboard
для inputTypeString
Помимо двух вышеупомянутых проблем, я также предлагаю использовать keyboard.nextDouble()
(что я уже сделал в приведенной ниже программе) вместо использования Double.parseDouble()
. В вашем подходе нет ничего плохого, но предлагаемый подход чище.
Еще одно предложение - преобразовать inputTypeString
в нижний регистр, прежде чем вывести из него charAt(0)
. Это позволит пользователю вводить как строчную, так и заглавную букву (например, c
или C
). Я уже сделал это также в программе, приведенной ниже.
Ниже приводится рабочая программа.
import java.util.Scanner;
public class CPS101TemperatureConverter {
int input;
static double enteredTemp;
static double calculatedTemp;
char retry;
static Boolean moreToProcess = true;
static double fahrenheitTemp;
static double celsiusTemp;
Scanner keyboard = new Scanner(System.in);
static char c='c';
static char f='f';
public static void main(String[] args) {
char inputChoice;
Scanner keyboard = new Scanner(System.in);
String inputTypeString="";
System.out.println("This program will convert temperatures.");
System.out.print("Please Enter a Temperature: ");
enteredTemp = keyboard.nextDouble();
System.out.println("You have entered " + enteredTemp);
System.out.print("Is this value in Celsius or Fahrenheit? ");
keyboard = new Scanner(System.in);
inputTypeString = keyboard.nextLine();
System.out.println("Your choice is: "+inputTypeString);
inputChoice = inputTypeString.toLowerCase().charAt(0);
if (inputChoice == c) {
CelsiusToFahrenheit();
} else if (inputChoice == f) {
FahrenheitToCelsius();
} else {
System.out.println("You have entered an invalid answer. Please try again.");
}
}
static void CelsiusToFahrenheit() {
calculatedTemp = (9.0 / 5.0) * enteredTemp + 32;
System.out.println(enteredTemp + " converted to Fahrenheit is " + calculatedTemp);
}
static void FahrenheitToCelsius() {
calculatedTemp = (enteredTemp - 32) * (9.0 / 5.0);
System.out.println(enteredTemp + " converted to Celisu is " + calculatedTemp);
}
}