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;
}
}
1 Answer 1
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))
....
formula
there is nothing much to say. But we do not have much to review. \$\endgroup\$