Saltar al contenido principal

Ejercicios mixtos de Java 0

Estos ejercicios combinan datos, entrada, operaciones y decisiones. Antes de leer una solución, escribe casos de prueba y predice sus resultados.

1. Reparto de entradas​

Enunciado​

Pide el número de entradas y de personas. Muestra cuántas entradas completas recibe cada persona y cuántas sobran. Puedes asumir valores enteros positivos.

Casos: 10 y 3 → 3 por persona, sobra 1; 8 y 4 → 2 por persona, sobra 0.

Solución razonada​

La división entera calcula grupos completos y % obtiene el resto.

import java.util.Scanner;

public class RepartoEntradas {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Entradas: ");
int entradas = entrada.nextInt();
System.out.print("Personas: ");
int personas = entrada.nextInt();

int porPersona = entradas / personas;
int sobrantes = entradas % personas;

System.out.println("Por persona: " + porPersona);
System.out.println("Sobran: " + sobrantes);
entrada.close();
}
}

2. Diagnóstico de una media​

Enunciado​

Este programa debería mostrar 7.5, pero muestra 7.0. Explica y corrígelo.

int primera = 7;
int segunda = 8;
double media = (primera + segunda) / 2;
System.out.println(media);

Solución razonada​

Toda la división ocurre entre enteros; el .5 se pierde antes de asignar a double.

double media = (primera + segunda) / 2.0;

También serviría convertir uno de los operandos: (double) (primera + segunda) / 2.

3. Envío gratuito​

Enunciado​

Pide el importe de una compra y si la persona es miembro. El envío es gratuito si la compra alcanza 50 € o si es miembro y alcanza 30 €. Los importes negativos son inválidos.

Solución razonada​

Los paréntesis hacen visible que la membresía y el mínimo de 30 € forman una misma alternativa.

import java.util.Scanner;

public class Envio {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Importe: ");
double importe = entrada.nextDouble();
System.out.print("¿Es miembro? (true/false): ");
boolean miembro = entrada.nextBoolean();

if (importe < 0) {
System.out.println("Importe no válido");
} else if (importe >= 50 || (miembro && importe >= 30)) {
System.out.println("Envío gratuito");
} else {
System.out.println("Envío de pago");
}
entrada.close();
}
}

Prueba -1/false, 50/false, 35/true y 35/false.

4. Conversor de temperatura​

Enunciado​

Pide una temperatura decimal y una unidad de origen: C o F. Convierte Celsius a Fahrenheit con C × 9 / 5 + 32, o Fahrenheit a Celsius con (F - 32) × 5 / 9. Rechaza otra unidad.

Solución razonada​

Son alternativas discretas sobre un mismo texto; switch comunica bien la elección. Usamos 9.0 y 5.0 para conservar decimales.

import java.util.Scanner;

public class Temperatura {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Temperatura: ");
double valor = entrada.nextDouble();
entrada.nextLine();
System.out.print("Unidad de origen (C/F): ");
String unidad = entrada.nextLine();

switch (unidad) {
case "C":
System.out.println(valor * 9.0 / 5.0 + 32 + " F");
break;
case "F":
System.out.println((valor - 32) * 5.0 / 9.0 + " C");
break;
default:
System.out.println("Unidad no válida");
}
entrada.close();
}
}

5. Presupuesto de una actividad​

Enunciado​

Pide nombre, número de asistentes, precio por persona y código de modalidad (A, B o C). La modalidad añade respectivamente 0 €, 25 € o 60 €. Si los asistentes son 10 o más, aplica un 10 % de descuento al total. Rechaza asistentes menores que 1 o una modalidad desconocida.

Solución razonada​

Primero validamos la cantidad. Después usamos switch para obtener el suplemento y solo calculamos cuando la modalidad es válida.

import java.util.Scanner;

public class Presupuesto {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Nombre: ");
String nombre = entrada.nextLine();
System.out.print("Asistentes: ");
int asistentes = entrada.nextInt();
System.out.print("Precio por persona: ");
double precio = entrada.nextDouble();
entrada.nextLine();
System.out.print("Modalidad (A/B/C): ");
String modalidad = entrada.nextLine();

double suplemento = 0;
boolean modalidadValida = true;

switch (modalidad) {
case "A":
suplemento = 0;
break;
case "B":
suplemento = 25;
break;
case "C":
suplemento = 60;
break;
default:
modalidadValida = false;
}

if (asistentes < 1) {
System.out.println("Número de asistentes no válido");
} else if (!modalidadValida) {
System.out.println("Modalidad no válida");
} else {
double total = asistentes * precio + suplemento;
if (asistentes >= 10) {
total *= 0.90;
}
System.out.println("Presupuesto para " + nombre + ": " + total + " €");
}
entrada.close();
}
}

Casos recomendados: 1 persona en A, 10 en B, 0 asistentes y modalidad X. La anidación se limita a una regla que solo tiene sentido después de validar los datos.

Has practicado todas las piezas de Java 0 sin bucles, arrays ni métodos propios. En la siguiente unidad las reunirás en un único asistente interactivo.