Okay, obviously the easiest approach is to just keep comparing from a list of words, searching each word and keeping a running highest.
I didn't do it this way. I also didn't use Java, so this answer won't help you, but I just _had_ to tackle this one. The magic is in using a regular expression and hash. I used ruby on a words list supplied with a linux distro. We're assuming y is not included.
### BEGIN
string = File.open('word_list.txt', 'r') {|file| file.read} #read in the file
word_list = string.split
tally = {} #initialize our hash
#the next line sets up the hash, scan gives all consecutive occurrences of the
#vowels in the word and grabs the max for that word
word_list.each {|word| tally[word] = ((word.scan /\a*[aeiou]+\a*/).map &:size).max}
tally.reject! {|k, v| !v} #get rid of words/abbreviations with no vowels like wryly
max = tally.values.max
vowel_winners = tally.select {|word, vowel_count| vowel_count == max}
puts vowel_winners
### END
Incidentally, the result is...
{"cooeeing"=>5, "miaoued"=>5, "miaouing"=>5, "queueing"=>5}
The only word Merriam-Webster accepts is queueing. This isn't surprising, since the linux words list often contains words that have obscure spellings or are not technically english words.
Edit... oops, forgot the 'e' in queueing while typing the answer. Fixed it now :)