Pythagorean Theorem in Java I'm new to Java and am following a series of lectures on Stanford's YouTube. I know that the code works, but I'd like to know if it can be improved upon.

/*
 * File: PythagoreanTheorem.java
 * Name: Will
 * Section Leader: N/A, I'm freeloading the class off Youtube.
 * -----------------------------
 * This file is the starter file for the PythagoreanTheorem problem.
 */

import acm.program.*;

public class PythagoreanTheorem extends ConsoleProgram {
    public PythagoreanTheorem() {}
    public void run() {
        PythagoreanTheorem myCalculator = new PythagoreanTheorem();
        double a = readDouble("a= ");
        double b = readDouble("b= ");
        if(myCalculator.formula(a,b) == 
            Math.floor(myCalculator.formula(a,b))) {
            println("C= "+(int)myCalculator.formula(a,b));}
        else {
            println("C= "+myCalculator.formula(a,b));}
                      }
    private double formula(double x, double y) {
        double c = Math.sqrt(x*x+y*y);
        return c;
    }
}
I did not check the acm package but my 2 cents:

No need to instantate a PythagoreanTheorem each time

public void run() {
    PythagoreanTheorem myCalculator = new PythagoreanTheorem();


run is not static, so there already is an instance of PythagoreanTheorem availiable in the method, referencable by this.

So instead of:

if(myCalculator.formula(a,b) == 


You can use 

if(this.formula(a,b) ==


Reuse results

You have a few calls to myCalculator.formula(a,b). While a and b do not change. You can store the result in a variable.

double c = myCalculator.formula(a,b)
if(c == Math.floor(c)) 
....