public class Ejercicio2 {
    public static void main(String[] args) throws Exception {

        /*
         * Realiza un programa que solicita al usuario que ingrese un String que
         * representa a una dirección IPv4.
         * Utiliza una estructura de selección, para determinar, si dicha IPv4 es
         * pública o privada.
         * Rango de direcciones privadas:
         * ● Clase A: 10.0.0.0 a 10.255.255.255
         * ● Clase B: 172.16.0.0 a 172.31.255.255
         * ● Clase C: 192.168.0.0 a 192.168.255.255
         * Si la IPv4 recibida es privada se mostrará el mensaje:
         * Privada
         * En caso contrario:
         * Pública
         */

        // 1º Guardo cada parte de la IP 10 (v1) 0 (v2) 0 (v3) 0 (v4)
        // 2º Con valores mínmos y máximos para saber si es A, B o C y por tanto es
        // PRIVADA o PÚBLICA.

        String ip = "172.25.0.10";
        String stringb1 = "", stringb2 = "", stringb3 = "", stringb4 = "";

        boolean bloque1 = false, bloque2 = false, bloque3 = false, bloque4 = false;
        // false => significa no relleno
        // true => significa relleno

        String aux = "";
        for (int i = 0; i < ip.length(); i++) {
            char caracter = ip.charAt(i);

            if (caracter != '.') {
                aux += caracter;
            } else {
                // Estamos ante un . (Separación)
                // ¿Cómo se en que bloque tengo introducir todo el aux?

                if (bloque1 == false) {
                    stringb1 = aux;
                    bloque1 = true; // Ahora si está relleno.
                    aux = ""; // Vacio el auxiliar
                } else if (bloque2 == false) {
                    stringb2 = aux;
                    bloque2 = true; // Ahora si está relleno.
                    aux = ""; // Vacio el auxiliar
                } else if (bloque3 == false) {
                    stringb3 = aux;
                    bloque3 = true; // Ahora si está relleno.
                    aux = ""; // Vacio el auxiliar
                }

            }

        }
        stringb4 = aux;
        System.out.println("B1: " + stringb1);
        System.out.println("B2: " + stringb2);
        System.out.println("B3: " + stringb3);
        System.out.println("B4: " + stringb4);

        // Se convierte a Int para poder compararlo.

        int b1 = Integer.parseInt(stringb1);
        int b2 = Integer.parseInt(stringb2);
        int b3 = Integer.parseInt(stringb3);
        int b4 = Integer.parseInt(stringb4);

        boolean esPrivado = true;
        String clase = "";

        // ● Clase A: 10.0.0.0 a 10.255.255.255
        if (b1 == 10 && (b2 >= 0 && b2 <= 255) && (b3 >= 0 && b3 <= 255) && (b4 >= 0 && b4 <= 255)) {
            esPrivado = true;
            clase = "A";
        }
        // ● Clase B: 172.16.0.0 a 172.31.255.255
        if (b1 == 172 && (b2 >= 16 && b2 <= 31) && (b3 >= 0 && b3 <= 255) && (b4 >= 0 && b4 <= 255)) {
            esPrivado = true;
            clase = "B";
        }
        // ● Clase C: 192.168.0.0 a 192.168.255.255
        if (b1 == 192 && b2 == 168 && (b3 >= 0 && b3 <= 255) && (b4 >= 0 && b4 <= 255)) {
            esPrivado = true;
            clase = "C";
        }
        if (esPrivado == true) {
            System.out.println("La ip: "+ip+" es privado y además es de Clase: " + clase);
        } else {
            System.out.println("La ip: "+ip+" es público");
        }

    }
}
