No, of course that wouldn't work properly. When your code gets to the first instance of 2, it replaces it with 3, which is then replaced by 2 by the next statement (so, no change at all). On the other hand, all original 3's will end up as 2's. Ditto with the 4's and 1's: they'll all be 1, by the time your logic statement is through. You'll need "placeholders."
Besides, the Do and long logic statements are not very efficient use of Mma. The Mma way of doing this would be with pattern matching and replacement rules: