Yep found that out myself too. The logic is not correct. Here's a working version:
echo "enter 3 numbers"
read n1 n2 n3
if [ -z "$n1" -o -z "$n2" -o -z "$n3" ]
echo "Enter 3 numbers please."
elif [ $n1 -ge $n2 ] && [ $n1 -ge $n3 ] # Both must be true
echo $n1 is maximum number
elif [ $n2 -ge $n3 ] # now we only need to check if n2 >= n3
echo $n2 is maximum number
else # If we get here, n3 must be it.
echo $n3 is maximum number
If parts of the code are unclear, don't hesitate to ask.