The board is represented as a StringBuffer; it could be a new class.
It might make sense to have a Player class.
There are a lot of magic numbers .
There are several complicated if statements.
There's a lot of duplication ”note the winner calculation in particular.
See also Exercise 61.