Getting rid of the Strings was a good idea. But that method look inordinately long and complicated. Why don't you simply use the remove method of the List interface? Why are you separating flower from weed from fungus? You are asking for ID and name in all three cases. Why are you repeating the removal code?
Christopher Sheridan wrote:. . . Fixed problem where smell, thorns, edible, poisonous, and medicine were Strings rather than booleans. . . .
No it doesn't. It returns true or false. But you can still use that to print what was removed.
A few minutes ago, I wrote:. . . If you simply call remove(), doesn't it return the item removed? . . .