I think there might be a problem with the way you've constructed your do/while loop; you have a code block underneath the while statement that doesn't do anything except change the scope of "start". It looks like you might have intended the block to be part of a while loop, but do/while works like this:
Code:
do {
STATEMENTS
} while(CONDITIONAL);
Also, just by glancing over it, you're doing some weird stuff with boolean ANDs. I don't really want to assume anything, but I don't think you want to be using "&&" like that. Maybe you do, but in either case, it sure makes for hard-to-read code.
Sorry if this doesn't help.