Each device on your network requires a unique address to communicate.
Most home routers include a DHCP server that assigns an individual IP address to each LAN device. Just set up the desired range on the router and set the devices to automatic/DHCP.
Whether you connect the devices to one of the 'router ports' (most home routers includes an internal switch, so those ports are actually switch ports) or add a switch to any of those ports (to increase the number of ports) doesn't matter.
Edit as the question now asks for public IPs: the one public IP of your router is assigned by your ISP. If you require more than one public IP address you need to ask them. Note that with destination NAT there is no reason for any of your LAN devices to have a public IP address directly assigned.
If you require port forwarding aka reverse NAT aka destination NAT you can forward different (TCP) ports to different LAN devices.
You can't however forward a specific port to more than one device. For multiple web servers all on port 80 you could use a reverse proxy that forwards on the HTTP application layer.
i forgot to mention that i want the external ip to be different for each lan port(pc) connected and not a local ip like 192.16.. but an external ip, is that possible? – Hashim Roja – 2018-11-24T23:17:21.390
2@HashimRoja That’s up to your ISP. The answer is most likely “no”, though. – Daniel B – 2018-11-24T23:37:14.167
so that's configurable on their end? that's what you mean? i gotta try and ask them hehe, really need this, i asked them for static ip addresse and cannot afford paying 10$/month for each ip – Hashim Roja – 2018-11-24T23:39:44.287
If an ipv6 address is convenient for you then you can dig out how to use a free (or no free) tunnelbroker such a hurricane electric. So update your question to reflect that – Yurij – 2018-11-25T12:19:19.693