Consider using Character.isLetter(userInput) instead of all those if-checks. If that is true, then you only have to check for the vowels to determine whethefr it is a consonane or a vowel. Also, if this is something other than a programming exercise, in English, the letter 'y' is often a vowel (and, rarely, 'w' can also be a vowel)
I added code tags to your first post. Always use the tags: doesn't it look better
Please explain what the problem is; you have not actually asked a question. Norhave you explained how your second post differs from the first; I nearly deleted it thinking it was a mistaken duplicate.
Move the declaration of the Scanner before the loop; you don't need more that one Scanner object.
Why are you using scan.next() and testing for equality with those one‑letter Strings? What was wrong with the first version with chars? Why are you going to no end of trouble to test for vowels and later using else if rather than simple else?
It looks wrong to me to have a sentinel value Q which is a normal result. Why not use 0 as a sentinel to quit?