This is close to the described method. You're just missing a loop.
Use a do/while loop as it will allow you to write pretty much a single block of code. Do/While will always execute the do then evaluate, unlike the while where it needs to evaluate first before processing.
int startpos = 0, stoppos = 0;
isError = false;
startpos = Integer.parseInt(OUDialog.request("Enter a start number between 1 & 11"));
stoppos = Integer.parseInt(OUDialog.request("Enter a stop number between 1 & 11"));
if (startpos <= 0 || startpos > 11 || stoppos <= 0 || stoppos > 11)
OUDialog.alert("The start number entered is not between 1 & 11 ");
isError = true;
} while (isError);
I decided in the end to add an isError variable. This is only becuase I didn't want to re-type all the startpos / stoppos conditions into the while loop.
Following this, you just need to check if startpos = stoppos, and set the values for startpos and stoppos (no need to check them, we know they are valid).
Because there is no error checking (don't know if exceptions have been covered for you or not), and I don't know what that OUDialog will do in the event of hitting cancel, I cannot guarantee that startpos or stoppos will be properly populated (these are things you'll need to test).
The description does not indicate that you are to handle the error on the startpos = stoppos, only to indicate that an error has occurred (which if you've covered exceptions is what I'd toss). If the intent is to re-ask the user for input on that event, you simply pack everything away into the do/while, and use a series of if checks against that isError (appropriately setting it to true when an error exists).