The following is part of the code for my college assignment.
else if (!codeList.contains(userCode)) {
i--; // i is the counter for the for-loop
}
else if (userQuantity[i]==0) {
i--;
}
The first part makes sure that if the user enters the wrong code, the counter i does not increment 1, or rather, it subtracts 1 from the recently incremented counter. This part works fine.
The second part however is what I seem to be having problems with. userQuantity[] is an int array and it has to be an array. This does not seem to do anything to the code. Even if 0 is entered for the quantity, it still incrememnts the counter which is not desireable.
I should explain, to avoid confusion, that this is an infinite for-loop (with a break statement). The reason I am doing a for-loop is because I am required to. Is it because of my for-loop that the condition isn’t working or am I doing something completely wrong with it?
This is for my college assignment so I would appreciate answers with explanation and not just quick-fixes. If you need me to explain, let me know please.
Although it’s not strictly illegal in Java, it’s not a good idea to change the value of the for loop control variable from within the loop. (Such modification is illegal in some other languages.)
By changing the loop iteration variable within the loop, you’re messing with the implicit assumptions offered by your use of a
forloop. For example, if a reader sees:the reader will rightfully assume that the loop is intended to execute exactly 10 times (or, no more than 10 if there is a
breakin there). However, if you go changing the value ofiwithin the loop, this assumption is no longer valid.If you must change the value of the counter, I would suggest writing this as a
whileloop instead:along with a comment that explains why you are changing
iwithin the loop and what it means to do so.