If you want to declare a setter, you must set the property equal to the incoming `value`.

    public String userInput
    {
        get { return userInput; }
        set { userInput = value; }
    }

You can also use the simplified form here since you are not doing anything more fancy:

    public String userInput { get; set; }

---

[@sfdcfox](http://salesforce.stackexchange.com/users/2984/sfdcfox) has astutely pointed you towards [Building a Custom Controller](https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_controller_custom.htm) from the `Visualforce Developer Guide`, but I think his own explanation is actually a better read for you here: http://salesforce.stackexchange.com/questions/71700/apex-controllers-what-do-the-get-set-do