Question: I am writing a program where the application has text fields to enter dollar amounts. 

There are methods that need to throw exceptions for items such as dollar amounts less than zero. when doing this I have check for exceptions like this:

```
if (Double.parseDouble(str) <= 0 || Double.parseDouble(str) > 10000)
    throw new InvaildDepositAmount("Deposit Amount " + str);
else
    totalBalance += amount;

```

My question is : Do I need to use the `Double.parseDouble(str)` every time I want to use this input, such in the `InvalidDepositAmount` class?

Answer: 
The simple answer is **no**. You can parse it once and use it as a variable later.

```
double depositAmount = Double.parseDouble(str);
if (depositAmount <= 0 || depositAmount > 10000)
    throw new InvaildDepositAmount("Deposit Amount " + depositAmount);
else
    totalBalance += depositAmount;

```

This is also more efficient because, what if the call to `parseDouble` were expensive (that is, it took a long time for it to get an answer)? Calling it once would be more efficient and easier to read in the long run.
You can just use a variable.

```
double x = 0;    
try {    
    double x = Double.parseDouble(str);        
} catch(Exception ex) {
    throw new InvaildDepositAmount("Deposit Amount " + str)    
}
if (x <= 0 || x > 10000) {
    throw new InvaildDepositAmount("Deposit Amount " + str)
}

```

I think it makes to code readable, but I'm not sure if it makes it more efficient because the compiler or JVM could notice that and use that expression just once (and do exactly what i'm doing in the code :))