Lets contrast it with a poor question as all questions that are good solve the user's problem... but not all questions that solve the users questions are good.
Consider the question: https://stackoverflow.com/q/35647663
The answer solved the problem (see the final comment). But it isn't a good question. The text isn't searchable. The only way I found it was by trawling through the NullPointerException duplicate questions.
The question that I linked - it isn't a question that someone will find again. It is a null pointer question and the person who answered it hand held the steps to solve the problem. The person answering it was answering it as a service to the OP rather than a "lets improve the ability for people to find information."
Look also to https://stackoverflow.com/q/26566648 - the OP was helped, but was that something that is going to be found again and used to solve another problem? Or https://stackoverflow.com/q/26827621 - the answer is the duplicate and while the person who answered did help, that question isn't something that is useful or findable. Its not a good question (try to find a search query in google that brings back that question).
A good question:
* states its problem well in a way that can be replicated
* is findable by querying a search engine for the plain text error or problem
* is written (often edited by others) to be a useful technical document
Look at https://stackoverflow.com/search?tab=newest&q=is%3aq%20answe... and consider how many of those questions are useful for adding to the body of knowledge and how many are "help me with my problem". And as that's a query for closed questions - look at the duplicates and consider "is that duplicate better written?"
If a question is poorly written, difficult to understand, or is answered by too many different answers ("how can I optimize this code?" and there are 100+ answers) then the utility of that question to help other people goes down. Nonetheless, there are people who will answer it because it helps that person solve their problem.