The ship is on the river .是正确的。

船在河上行。

这里主要区别介词on 和 in的区别。

介词on,指在…上面,这个上面是指"面“按触。介词in,是指在…里面。

船在水上行,当然是指在水面上,所以用on。

The ship is on the river .

青蛙在水里游,当然是指在水中,所以用in。

Frogs swim in the water.