Quite a few problems with this code.
First, it doesn't follow convention for a method with a name that starts with "set" -- such a method will be expected to take a parameter which is the value that you want to set the named attribute to. As such, these methods are normally declared with a void return type. Also, they are usually public. That is, something like this:
Second, the method sets the value of a local variable. The scope of this action and value is limited to the method itself. That is, nothing outside of this method will know anything even happened with the departmentChoice. This is the reason you have to return it from the method, breaking semantic convention for a setter method.
Third, you are mixing in user interaction. A setter method's purpose is to set an attribute. User interaction should be done separately. That is, interact with user to get the value, then call the setter method to set the attribute value. These are kept separate to facilitate code maintenance, testing, and debugging. Combining the two actions violates a basic design principle: Single Responsibility.