Curso de Java SE (Standard Edition) para aprender todo sobre este lenguaje, combinando teoria y ejercicios para practicar.
El curso esta hecho en Java 21, pero es compatible con versiones anteriores.
El curso esta divido por partes.
Video en youtube
- Instalación Java y Apache Netbeans (IDE)
- Hola mundo
- Variables
- Tipos de variables
- Constantes
- Comentarios
- Pedir datos por Scanner
- Mostrar datos
- Operadores aritmeticos
- Operadores unarios
- Operadores logicos
- Operadores relaciones
- Casting
- Clase Math
- Generar aleatorios con Random
- if else
- else if
- switch
- while
- for
- do while
- Scopes
- String
- Funciones
- Arrays
- Clase Arrays
- Matrices
- Funciones y arrays
- Excepciones
- Enumerados
-
Pide un nombre por teclado y haz que te salude. Por ejemplo, si introduces "Fernando", la respuesta debe ser ¡Hola Fernando!
-
Pide el precio de un producto sin IVA y calcula su precio con IVA. El IVA es del 21%. Formatea el resultado para que se muestre con dos decimales.
-
Pide dos números por teclado e indica si el segundo es divisible por el primero Por ejemplo, si numero1 = 10 y numero2 = 5 debería mostrar: "El numero 5 es divisible de 10"
-
Pide un año por teclado e indica si es bisiesto o no. Un año es bisiesto cuando es divisible entre 4 y no divisible por 100 o es divisible por 400.
-
Pide 3 números por teclado e indica cual es el mayor.
-
Pide 2 operandos, un operador (+ - * /) y realiza la operación correspondiente. Si el operador es invalido o el 2º operando es 0 en el caso de la división, debes indicar que no se puede realizar la operación.
-
Mostrar la suma de los números hasta que el usuario introduzca un -1.
-
Muestra los números del 1 al 100 que sean divisibles entre 2 y 3.
-
Pide un numero por teclado y muestra su tabla de multiplicar hasta 10.
-
Pide un numero por teclado y valida que sea positivo.
-
Pide una frase por teclado y cuenta cuentas vocales tiene.
-
Pide una frase por teclado y cuenta cuantas mayúsculas y minúsculas hay.
-
Pide una frase por teclado, elimina los espacios y guardarlos en otra variable.
-
Pide una frase e indica si es palíndromo. Un palíndromo es una palabra o frase que se lee igual al revés sin espacios. Por ejemplo, "Amad a la dama"
-
Dado un numero generado aleatorio entre 1 y 100 (incluidos) pide al usuario por teclado que lo adivine dándole pistas diciéndole si es mayor o menor. El usuario solo tiene 5 intentos. Si se acaban los intentos o se acierta el numero, el juego se acaba.
-
Pide un numero por teclado y saca su factorial. El factorial se obtiene de multiplicar los números de n a 1. Por ejemplo, 54321 = 120
-
Crea una función que genere un numero aleatorio entre 2 números inclusive.
-
Crea una función que genere un password de una longitud con números, letras mayúsculas y letras minúsculas combinadas.
-
Crea una función dado un parámetro obtenga el numero de la serie fibonacci. La serie fibonacci, empieza en 1 1 y el siguiente se obtiene sumando los dos anteriores. Por ejemplo, 1 1 2 3 5 8 13 21 34 55 ... Valida que la posición es mayor o igual que 1.
-
Crea un array de números y obtén la suma y la media de sus elementos.
-
Crea un array de números y obtén el mayor y el menor del array.
-
Dado dos arrays, uno con nombres de personas y otro con sus edades, indique cual es la persona con mas edad.
-
Crea un array e indica si es capicúa. Es decir, que el array es igual tanto de izquierda a derecha como de derecha a izquierda.
-
Crea dos arrays y fusiónalos en uno.
-
Indicar si un elemento existe en un array usando una función.
-
Crea una función que guarde en un array números aleatorios entre un mínimo y un máximo.
-
Pide una fila por teclado y realiza la suma de los valores de esa fila.
-
Pide una columna por teclado y realiza la suma de los valores de esa columna.
-
Crea una matriz de caracteres, donde este todo vacío excepto una donde este el carácter X. El objetivo es mover ese X por el tablero sin que se salga del tablero. Las direcciones son arriba, abajo, izquierda y derecha.
-
Crea un enumerado con todos los meses del año. Dado un mes, indica el numero de días que tiene. En el caso de febrero, pediremos el año, ya que si el año es bisiesto tendrá 29 días sino tendrá 28 días. Debes validar si se inserta un mes valido o si se inserta los datos correctos. Los meses que tienen 31 días son: Enero, Marzo, Mayo, Julio, Agosto, Octubre y Diciembre. Los meses que tienen 30 días son: Abril, Junio, Septiembre y Noviembre.
Video en youtube
- Introduccion POO
- Atributos
- Modificadores de acceso
- Constructores
- Getters y setters
- Métodos
- Sobrecarga de métodos y constructores
- Método toString
- Métodos equals y hashCode
- Enumerados avanzados
- Atributos estáticos
- Métodos estáticos
- Objetos como atributos
- Record
- Record métodos
- Record constructores
- Record atributos estáticos
- Herencia
- Polimorfismo
- Abstracción
- Interfaces
- Arrays de objetos
- Instanceof
- CompareTo
- Clases genericas
- Javadoc
-
Realiza una clase que represente a un libro. Un libro se define por:
-
ISBN
-
titulo
-
numero de paginas
-
autor
-
prestado
Debe tener un constructor vacio y otro por defecto. Encapsula todos sus atributos. Un libro puede realizar lo siguiente:
-
prestar: comprueba si esta o no prestado y pone el atributo prestado a true.
-
devolver: comprueba si esta o no prestado y pone el atributo prestado a false.
-
imprimir: dado un coste, calcularemos el coste de imprimir todas las paginas del libro.
Muestra la información de la siguiente manera:
Cuando este prestado:
El libro () con titulo y autor tiene paginas y esta prestado
Cuando no este prestado:
El libro () con titulo y autor tiene paginas y no esta prestado
Un libro es igual a otro cuando sus ISBN son iguales
-
-
Crea una clase que represente a un ordenador. Un ordenador se define por:
-
Marca
-
Modelo
-
GB de RAM (Por defecto, 4GB)
-
Capacidad disco Duro en GB (Por defecto, 50GB)
-
Espacio utilizado en el disco duro
-
Estar o no encendido (por defecto esta apagado)
La RAM debe ser potencia de 2, de lo contrario lanzaremos una excepcion. Encapsula todos los atributos. Tendra los siguientes constructores:
-
Vacio
-
Solo pidiendo la RAM
-
Solo pidiendo la RAM y la capacidad del disco duro
-
Pidiendo todos los atributos excepto el espacio utilizado y encendido
Las operaciones que podra realizar son:
-
encender: Enciende el ordenador, haciendo que el atributo encendido este a true
-
apagar: Enciende el ordenador, haciendo que el atributo encendido este a false
-
transferir archivos: dado un numero de GB, se aumenta el espacio utilizado. Si no cabe, se debera indicar. Solo se podra hacer si el ordenador esta encendido.
-
eliminar archivos: dado un numero de GB, se elimina el espacio indicado, si supera al espacio utilizado se quedara en 0. Solo se podra hacer si el ordenador esta encendido.
Un ordenador es igual a otro cuando tienen la misma marca y modelo.
Muestra la informacion con toString
-
-
Crea una clase que represente a un empleado. Un empleado se define por:
-
DNI
-
Nombre
-
Edad
-
Departamento (Contabilidad, informatica y direccion)
-
Teletrabajo
-
Empresa
-
Salario base
El DNI se debe validar que tenga el formato correcto (que sea correcto no hace falta) y la empresa es obligatoria.
Todos los empleados tienen un salario base que es el mismo para todos. El departamento debe ser un enumerado.
La empresa es un objeto que se define por CIF y nombre. El CIF no es necesario de validar.
Encapsula todos los atributos. Crea un constructor por defecto. Un empleado podrá realizar las siguientes acciones:
-
calcular sueldo: el sueldo de un empleado se define por los siguientes parámetros:
-
Si tiene mas de 30 años, se le incrementa el salario 200€
-
Si pertenece al departamento de contabilidad, se le incrementa el salario 50€
-
Si pertenece al departamento de informática, se le incrementa el salario 80€
-
Si pertenece al departamento de dirección, se le incrementa el salario 100€
-
Si tiene teletrabajo, se le incrementa el salario 30€
-
Un empleado es igual a otro cuando tienen el mismo DNI.
Muestra la información del empleado.
-
-
Realiza el ejercicio 31 usando Record
-
Crea una clase que represente un Producto. Un producto se define por:
-
Id
-
Nombre
-
Precio
El id sera autoincrementado. El precio debe ser positivo.
Encapsula los atributos. Dos constructores: vacio y otro pidiendo el nombre y el precio
Las operaciones que podrá realizar son:
- comprar: dada una cantidad, indicar el precio total
Crea una clase que represente un producto fresco.
Tiene los mismos atributos que producto, ademas se define por tener días de caducidad.
Encapsula los atributos. Dos constructores: vacio y por defecto.
Las operaciones que podrá realizar son:
-
comprar: dada una cantidad, indicar el precio total. Según los dias de caducidad el precio que le queden, el precio se reducirá:
-
Si le quedan entre 3 y 5 dias, se reduce un 40%
-
Si le quedan menos de 3 dias, se reduce un 70%
-
Crea una clase que represente un producto refrigerado.
Tiene los mismos atributos que producto, ademas se define por tener el cajon donde se encuentra. Encapsula los atributos. Dos constructores: vacio y por defecto.
Las operaciones que podrá realizar son:
- comprar: dada una cantidad, indicar el precio total
-
-
Crea una clase que represente a un vehiculo Un vehiculo se define por:
-
Marca
-
Modelo
Crea un constructor por defecto. Encapsula sus atributos. Crea un método toString para mostrar su informacion.
Crea una clase que represente a un coche.
Ademas de los atributos que tiene un vehiculo, se define por:
- Numero de puertas
Crea un método toString para mostrar su informacion.
Crea una clase que represente a una moto.
Ademas de los atributos que tiene un vehiculo, se define por:
- Si tiene o no un sidecar
Crea un método toString para mostrar su informacion.
Crea una clase que represente a un coche deportivo
Ademas de los atributos que tiene un coche, se define por:
- Si es o no descapotable
Crea un método toString para mostrar su informacion.
-
-
Crea una clase que represente un aeropuerto. Un aeropuerto se define por:
-
Id
-
Nombre
-
Anio inauguracion
-
Capacidad
El id sera autoincrementado. Encapsula todos sus atributos Crea dos constructores, uno vacio y otro con todos los atributos excepto el id.
No se pueden crear instancias de aeropuertos.
Las operaciones que se deben implementar todas sus clases hijas son:
- gananciasTotales: se le pasa una cantidad y no devuelve nada.
Crea una clase que represente a un aeropuerto publico.
Además de los atributos de un aeropuerto, se define por:
-
financiacion
-
numero de trabajadores discapacitados
Encapsula todos sus atributos. Crea dos constructores, uno vacio y por defecto. Las operaciones que se deben implementar:
- gananciasTotales: Dada una cantidad, se le sumara la financiacion y 1000€ por cada trabajador discapacitado
Crea una clase que represente a un aeropuerto privado.
Además de los atributos de un aeropuerto, se define por:
- numero de socios
Encapsula todos sus atributos. Crea dos constructores, uno vacio y otro por defecto. Las operaciones que se deben implementar:
- gananciasTotales: dada una cantidad, se dividira entre el numero de socios.
-
-
Crea una interfaz que se llame Prestable:
Tendrá los siguientes métodos:
-
prestar
-
devolver
Crea la clase VideoJuego que implemente esta interfaz.
Se define por:
-
nombre
-
precio
-
prestado
-
vecesPrestado
Encapsula los atributos nombre y precio. Crea un constructor que pida nombre y precio. Las operaciones que debe realizar son:
-
prestar: pone prestado a true, solo se puede prestar si esta disponible. El atributo vecesPrestado aumentará en uno.
-
devolver: pone prestado a false, solo se puede devolver si esta prestado.
Crea la clase Prestamo que implemente la interfaz Prestable.
Se define por los siguientes atributos:
-
cantidad
-
adeudo
-
titular
Encapsula los atributos cantidad y titular. Crea un constructor que pida la cantidad y el titular. Las operaciones que debe realizar son:
-
prestar: presta el valor del atributo cantidad al titular, mostrará un mensaje indicándolo. Incrementa el adeudo con un 5% de interés.
-
devolver: devuelve el valor del atributo cantidad al titular, mostrará un mensaje indicándolo. El adeudo se reducirá, el adeudo no puede ser negativo, por lo que se quedara en cero en ese caso.
-
-
Recuperamos la clase Producto y sus clases hijas. Crea un array de productos de diferentes tipos y muestralos ordenados por precio del mas barato al mas caro.
Al final debes mostrar:
-
numero de cada producto
-
total de importe comprando 5 unidades de cada producto
-
el producto refrigerado tiene el cajon mas alejado
-
el producto fresco mas proximo a caducar
-
Video en youtube
- File
- Path, Paths y Files
- FileWriter
- FileReader
- Try resources
- BufferedWriter
- BufferedReader
- PrintWriter
- Scanner
- FileInputStream
- FileOutputStream
- DataOutputStream
- DataInputstream
- RandomAccessFile
- ObjectOutputStream
- ObjectInputStream
- MyObjectOutputStream
-
Crea una clase llamada Lista.
Se define por los atributos:
-
elementos
-
numElementos
El atributo elementos puede ser cualquier tipo que le indiquemos. Tendremos un constructor donde le pasaremos el tamaño que queremos del array, debe ser positivo.
Crea una interfaz llamada Listable con las siguientes operaciones:
-
posicion: le pasamos un elemento T y devolvera un numero
-
aniadir: le pasamos un elemento T y devolvera un booleano
-
tamanio: sin parametros y devolvera un numero
-
eliminar: le pasamos un elemento T y devolvera un booleano
-
listar: sin parametros y no devuelve nada
-
vaciar: sin parametros y no devuelve nada
Implementala en nuestra clase Lista
Las operaciones de Lista son:
-
posicion: dado un elemento, indica en que indice esta, sino existe, devolvemos un -1
-
aniadir: añade un elemento al array, siempre y cuando haya espacio. No se admiten repetidos. True si lo añade y false sino lo hace
-
tamanio: devuelve el numero de elementos que hay
-
eliminar: elimina el elemento que le pasemos. True si lo elimina y false sino lo hace.
-
listar: muestra los elementos que tenemos
-
vaciar: reinicia el array al tamaño original
-
-
Crea un directorio llamado pruebas.
Crea 10 ficheros dentro del directorio pruebas con el siguiente formato:
file-.txt donde se sustituira por el numero del fichero
Lista los fichero dentro de la carpeta pruebas.
Si el directorio pruebas existe, lo borraremos antes de empezar a crear.
Puedes hacerlo con File o Path.
- Pide un número positivo por teclado.
Escribe en el fichero numeros.txt los numeros del 1 al número introducido.
Despues, lee el fichero y muestra su contenido.
- Genera un fichero index.html que contenga una etiqueta h1 con un hola mundo.
Debe estar tabulado como un html.
- Escribe un fichero de 20 lineas donde cada linea sera un password aleatorio.
El password sera de 8 caracteres combinando letras mayusculas, minusculas y numeros.
Despues, obten una fila aleatoria y obten un password.
Si el fichero existe y es valido (tiene al menos 20 lineas) no lo generaremos de nuevo.
- Usa un Scanner para pedir lineas de texto al usuario y guardalas con un PrintWriter.
Si ya tiene contenido, se lo añadiremos al final.
Lee el fichero resultante con otro Scanner.
- Pide una ruta de origen de un fichero.
Debe cumplir los siguientes requisitos:
- Debe existir
- Debe ser un fichero
- Debe tener alguna de las siguientes extensiones:
- jpg
- png
- mp3
- mp4
Tambien debes pedir la ruta donde almacenarlo.
Debe cumplir los siguientes requisitos:
- Debe existir
- Debe ser un directorio
Copia el fichero de origen al destino.
Muestra un porcentaje del progreso de la copia.
- Vamos a gestionar una serie de personas.
Cada registro tiene el siguiente formato:
- Nombre: String de 10 caracteres
- Edad: int
- Altura: float
- Peso: float
Pide una persona al iniciar el programa y guardalo al final del fichero.
Antes de acabar debes mostrar:
- El numero de personas que hay en el fichero
- Media de edad
- Nombre de la persona mas alta
- Suma de todos los pesos
- Vamos a gestionar una serie de productos.
Cada registro tiene el siguiente formato:
- ID: int, este sera autoincrementado
- Nombre: String de 20 caracteres
- Precio: float
- Descuento: boolean
Crea un menu con las siguientes opciones:
- Crear producto: Creamos un producto al final del fichero
- Buscar producto: Pedimos un id y mostramos los datos de ese producto
- Mostrar productos: Mostramos todos los productos
- Salir: Salimos de la aplicación
- Vamos a gestionar una serie de productos serializados.
Crea la clase Producto con los siguientes atributos:
- id (int)
- nombre (String)
- precio (float)
Dentro del fichero, vamos a tener un array de productos de 10 elementos.
Crea un menu con las siguientes opciones:
- Guardar producto: guarda un producto en el fichero si hay espacio en el array
- Mostrar productos: muestra todos los prodcutos del fichero
- Borrar fichero: borra el fichero de los productos
- Salir: sale de la aplicación
- Vamos a gestionar una serie de productos serializados.
Crea la clase Producto con los siguientes atributos:
- id (int)
- nombre (String)
- precio (float)
Puedes insertar tantos productos como quieras. Los productos debe ser independientes dentro del fichero (sin arrays)
Crea un menu con las siguientes opciones:
- Guardar producto: guarda un producto en el fichero
- Mostrar productos: muestra todos los prodcutos del fichero
- Borrar fichero: borra el fichero de los productos
- Salir: sale de la aplicación