No doubt this problem is simple for most; however, I seem to be having difficulty in producing any output. It compiles...just doesn't output anything. Where have I gone wrong, may I ask? Thanks in advance!
public class PythagoreanTriples {
public static void main( String args[] ) { int side1; int side2; int hypotenuse; int limit = 5; int i=0;
/* Loop for side1 to try the values 1-limit. */ for (side1=1; side1<limit; ++side1) {
/* Loop for side2 to try the values 1-limit. */ for (side2=side1+1; side2<limit; ++side2) {
/* Loop for hypotenuse to try the values 1-limit */ for(hypotenuse=side2+1; hypotenuse<limit; ++hypotenuse) {
/* An if statement that determines whether the sum of the two sides squared equals the hypotenuse squared. If this condition is true display side1, side2 and hypotenuse. */
if(side1*side1+side2*side2 == hypotenuse*hypotenuse) { System.out.printf(" %d : ( %d, %d, %d )\n", ++i, side1, side2, hypotenuse); } // end if } //end innermost for } //end inner for } //end outer for } //end main
Your code is really messy and difficult to read. Please place your code in pre tags, see the note that comes up on your left next time you post.
My immediate guess is that execution never enters the if statement.
Stich a println statement just before it, if this comes out, its a simple matter of logic (your if statement is never satisfied, hence System.printf never gets executed).
Once again: PLEASE, format your code in a legible manner (help us help you).
Your program is performing exactly as written. I'm assuming that you wanted to see "1: (3, 4, 5)" printed out at the end, but the innermost for loop will exit when the hypotenuse == 5 without executing the loop at that point. If you increase your limit to 6 you will see the printout above, if you increase it further to say 100 you will see a nice range of tuples.
This answer was obtained by pasting your code into a class in Eclipse and running through with the debugger a couple of times to find out what was happening.
That may be true, although it would result in compiler errors and never would've run in the first place. I was just checking the for/if logic and am running JDK 1.4.2, so I changed the printf to println so it would compile.