I'm new here and to programming, so sorry if this is too long. I'm sure there's a much easier way to do this, but I'd really like to see if this can get resolved.
I'm working on a program that takes user input (double) and converts from Celsius to Fahrenheit (cToF) and vice versa (fToC) with constraints of 0 to 1000. I have a separate method for both cToF and fToC.
I want to throw an exception for when the user doesn't input a double. I have catch (InputMismatchException cToF) and catch (InputMismatchException2 fToC) in the main that do different things.
Also, I'm suspicious that the math is incorrect for fToC, I just haven't gotten to it yet.
I tried changing the name of InputMismatchException2 to InputMismatchException, but I get "exception has already been caught".
I already have import java.util.*.
I tried adding "throws Exception" at the beginning of the main method and both of the conversion methods.
I'm not sure if the try-catch should be in the main, the individual methods, or both.
public static void main(String args[]) throws InputMismatchException, InputMismatchException2 {
Scanner choice = new Scanner(System.in);
String unit = "n";
boolean typo = false;
double tempC = 0;
double tempF = 0;
try {
start();//method to determine conversion type (F-C or C-F)
if (typo == false) {
do {//forever loop
question(unit);
}//end do loop
while (typo == false);
}//end if
System.out.println("Thank you, goodbye!");
}//end try
catch (InputMismatchException cToFE) {//if a non-double is entered
System.out.println("The value " + tempC + " is not within previously defined constraints.");
System.out.println("Please enter a new value.");
cToF(unit);
}//end cToF catch
catch (InputMismatchException2 fToCE) {//if a non-double is entered
System.out.println("The value " + tempF + " is not within previously defined constraints.");
System.out.println("Please enter a new value.");
fToC(unit);
}//end fToC catch
}//end main method
public static void cToF(String unit) throws InputMismatchException {
System.out.println();
System.out.println("Please enter a value from 0 to 1000.");//CONSTRAINTS: 0 <= temp <= 1000
Scanner temp = new Scanner(System.in);
double tempC = temp.nextDouble();
if (0 <= tempC && tempC <= 1000) {//if tempC is within constraints
double tempF = (tempC * 1.8) + 32;//arithmetic with tempC == tempF
System.out.println(tempC + " degrees Celsius is " + tempF + " degrees Fahrenheit");//print conversion
}//end if
else if (tempC < 0 || tempC > 1000) {//if tempC is NOT within constraints
System.out.println("The value " + tempC + " is not within previously defined constraints.");
System.out.println("Please enter a new value.");
cToF(unit);
}//end else if
else {//if non-double entered
//InputMismatchException cToFE = new InputMismatchException();
throw new InputMismatchException();
}//end else
}//end cToF method
public static void fToC(String unit) throws InputMismatchException2 {
System.out.println();
System.out.println("Please enter a value from 0 to 1000.");//CONSTRAINTS: 0 <= temp <= 1000
Scanner temp = new Scanner(System.in);
double tempF = temp.nextDouble();
if (0 <= tempF && tempF <= 1000) {//if tempF is within constraints
double tempC = (32 - tempF) / 1.8;//arithmetic with tempF == tempC
System.out.println(tempF + " degrees Fahrenheit is " + tempC + " degrees Celsius");//print conversion
}//end if
else if (tempF < 0 || tempF > 1000) {//if tempF is NOT within constraints
System.out.println("The value " + tempF + " is not within previously defined constraints.");
System.out.println("Please enter a new value.");
fToC(unit);
}//end else if
else {//if non-double entered
//InputMismatchException2 fToCE = new InputMismatchException2();
throw new InputMismatchException2();
}//end else
}//end fToC method
What I want:
If the user types in a letter while in either method (fToC/cToF), print The value [tempF/tempC respectively] is not within previously defined constraints. Please enter a new value.
Then recursively call either method to restart the temp input process.
What I'm getting (with current code):
$ javac Temperature.java
Temperature.java:5: error: cannot find symbol
public static void main(String args[]) throws InputMismatchException, InputMismatchException2 {
^
symbol: class InputMismatchException2
location: class Temperature
Temperature.java:125: error: cannot find symbol
public static void fToC(String unit) throws InputMismatchException2 {
^
symbol: class InputMismatchException2
location: class Temperature
Temperature.java:42: error: cannot find symbol
catch (InputMismatchException2 fToCE) {//if a non-double is entered
^
symbol: class InputMismatchException2
location: class Temperature
Temperature.java:151: error: cannot find symbol
throw new InputMismatchException2();
^
symbol: class InputMismatchException2
location: class Temperature
4 errors