Ejercicio 20. Compañía de Transportes

Una compañía de transporte internacional tiene servicio en algunos países de América del Norte, América Central, América del Sur, Europa y Asia. El costo por servicio de transporte se basa en el peso del paquete y la zona a la que va dirigida. Lo anterior se muestra en la siguiente tabla:
ZONA UBICACIÓNCOSTO/KILOGRAMO
1 América del Norte24,00 euros
2 América Central20, 00 euros
3 América del Sur21,00 euros
4 Europa10,00 euros
5 Asia18,00 euros
Parte de su política implica que los paquetes con un peso superior a 5kg no son transportados, por cuestiones de logística y seguridad.
Realiza un algoritmo para determinar el cobro por la entrega de un paquete o, en su caso, el rechazo de la entrega.

Con este ejercicio ponemos fin a la tanda de actividades relacionadas con el aprendizaje de las estructuras alternativas (condicionales) en JAVA, y resulta un ejemplo interesante, pues podemos combinar las dos estructuras que hemos visto.

Como vemos en el enunciado, la resolución de este problema dependerá de dos variables peso y zona.

peso será una variable de tipo entero, que pediremos al cliente para saber el paquete si ha de ser admitido o no, y también para calcular el precio final que tendrá que pagar.

En el caso de zona será una variable numérica, que introducirá el usuario tras mostrarle un menú con su equivalencia.

De este modo, lo primero que hará nuestro programa es mostrar el menú, dando a elegir la zona a la que queremos mandar el paquete, posteriormente pedirá el peso.

Una vez tengamos los dos datos, utilizaremos una estructura condicional if:

  • Si peso > 5, mostrará un mensaje indicando que el paquete no puede ser aceptado.
  • Si peso < 1, nos indicará que el peso debe ser un valor entero positivo.
  • Si peso no entra en estas dos condiciones, ya entraría en el else correspondiente, y evaluaríamos la zona mediante un switch:
    • Si zona = 1. El precio a pagar será peso * 24
    • Si zona = 2. El precio a pagar será peso * 20
    • Si zona = 3. El precio a pagar será peso * 21
    • Si zona = 4. El precio a pagar será peso * 10
    • Si zona = 5. El precio a pagar será peso * 18
    • Si zona tiene otro valor. Mostrará error.
package estructurasAlternativas;

/**
20 Ejercicios Estructuras Alternativas en Java

Programa:
Una compañía de transporte internacional tiene servicio en algunos países de
América del Norte, América Central, América del Sur, Europa y Asia. El costo
por el servicio de transporte se basa en el peso del paquete y la zona a la que
va dirigido. Lo anterior se muestra en la tabla:

    ZONA	UBICACIÓN	        COSTO/KILOGRAMO
    1	    América del Norte	  24.00 euros
    2	    América Central	    20.00 euros
    3	    América del Sur	    21.00 euros
    4	    Europa	            10.00 euros
    5	    Asia	              18.00 euros

Parte de su política implica que los paquetes con un peso superior a 5 kg no son
transportados, esto por cuestiones de logística y de seguridad. 
Realice un algoritmo para determinar el cobro por la entrega de un paquete o, en
su caso, el rechazo de la entrega.

@author: manolohidalgo_
@date: 09-11-19
*/

import java.util.Scanner;
// Inicio del programa y declaración de variables:
public class Ejercicio20v2Transporte {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int peso;
    int zona;

// Solicitud de datos al usuario
    System.out.println("Calcula la tarifa para el envío según peso y zona de destino.");
    System.out.println("Zonas de envío:");
    System.out.println("1.- América del Norte");
    System.out.println("2.- América Central");
    System.out.println("3.- América del Sur");
    System.out.println("4.- Europa");
    System.out.println("5.- Asia");
    zona = scanner.nextInt();
    System.out.println("Introduce el peso del paquete en gramos: ");
    peso = scanner.nextInt();

// Realizamos comparaciones y mostramos el resultado
    if (peso > 5){
      System.out.println("El paquete no puede ser admitido por motivos de seguridad.");
    } else if (peso < 1) {
      System.out.println("El peso del paquete debe ser un entero positivo.");
    } else {
      switch (zona) {
      case 1:
        System.out.println("El paquete de " + peso + " kilogramos enviado a América del Norte sale por " +(peso*24) + " euros.");
        break;
      case 2:
        System.out.println("El paquete de " + peso + " kilogramos enviado a América Central sale por " +(peso*20) + " euros.");
        break;
      case 3:
        System.out.println("El paquete de " + peso + " kilogramos enviado a América del Sur sale por " +(peso*21) + " euros.");
        break;
      case 4:
        System.out.println("El paquete de " + peso + " kilogramos enviado a Europa sale por " +(peso*10) + " euros.");
        break;
      case 5:
        System.out.println("El paquete de " + peso + " kilogramos enviado a Asia sale por " +(peso*18) + " euros.");
        break;
      default:
        System.out.println("ERROR: zona elegida incorrecta.");
        break;
      }
    }
  }
}

Puedes acceder a este ejercicio en GitHub en este enlace

Si tienes alguna duda al respecto, alguna sugerencia o algo que no te haya quedado claro, no tienes más que escribirme en los comentarios, estoy aquí para ayudarte y aprender, ¡Nos leemos!