Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ÍNDICE:
EJERCICIOS NORMALES: 4
EJERCICIOS DE MENÚ: 25
ESTRUCTURA POO: 49
1
➔ EJERCICIOS NÚMEROS PARES E IMPARES:
Mostrar por consola los 20 primeros números impares en orden descendente usando el bucle for.
public class Estudiando {
public static void main(String[] args) {
for (int i = 19; i > 0; i--) {
System.out.println("valor: " + i);
i--;
}
}
}
Diseñar un programa Java que muestre el producto de los 10 primeros números impares.
public class Estudio {
public static void main(String[] args) {
long producto = 1;
for (int i = 1; i < 20; i += 2) {
producto = producto * i;
}
System.out.println("La multiplicación de los 10 primeros impares: " + producto);
}
}
Modifica el programa anterior para tener en cuenta la igualdad en las variables a, b y c imprime por
pantalla un mensaje para indicarlo en ese caso. Después "juega" con los valores de las variables para
comprobar si tu programa es correcto.
public class Estudiando {
public static void main(String[] args) {
int a = 8, b = 6, c = 8;
if (a >= b) {
if (a == b) {
System.out.println("a y b tienen el mismo valor");
}if (a >= c) {
if (a == c) {
System.out.println("a y c tienen el mismo valor");
}
System.out.println("a es el mayor");
}else {
System.out.println("c es el mayor");
}
} else {
if (b >= c) {
if (b == c) {
System.out.println("b y c tienen el mismo valor");
}
System.out.println("b es el mayor");
} else {
3
System.out.println("c es el mayor");
}
}
}
}
Realizar un juego para adivinar un número. Para ello pedir un número N, y luego ir pidiendo números
indicando “mayor” o “menor” según sea mayor o menor con respecto a N. El proceso termina cuando
el usuario acierta.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int n, num;
// n es el número que hay que acertar
// num guarda los números introducidos
Scanner sc = new Scanner(System.in);
System.out.print("Introduce N: ");
n = sc.nextInt();
System.out.print("Introduce número: ");
num = sc.nextInt();
while (num != n) // mientras no coincidan ambos números
{
if (num > n) {
System.out.println("menor");
} else {
System.out.println("mayor");
}
System.out.print("Introduce número: ");
num = sc.nextInt();
}
}
}
➔ EJERCICIOS NORMALES:
Considera estás desarrollando un programa Java donde necesitas trabajar con objetos de tipo Rueda
(que representa a una rueda de un vehículo). Crea un programa donde a través de condicionales if
realices las siguientes comprobaciones:
Si el diámetro es superior a 1.4 debe mostrarse por consola el mensaje “La rueda es para un vehículo
grande”. Si es menor o igual a 1.4 pero mayor que 0.8 debe mostrarse por consola el mensaje “La
rueda es para un vehículo mediano”. Si no se cumplen ninguna de las condiciones anteriores debe
mostrarse por pantalla el mensaje “La rueda es para un vehículo pequeño”.
Si el diámetro es superior a 1.4 con un grosor inferior a 0.4, ó si el diámetro es menor o igual a 1.4
pero mayor que 0.8, con un grosor inferior a 0.25, deberá mostrarse por consola el mensaje “El grosor
para esta rueda es inferior al recomendado”
Compila el código para comprobar que no presenta errores, crea un objeto, usa sus métodos y
comprueba que aparezcan correctamente los mensajes por consola.
public class Estudiando {
public static void main(String[] args) {
double diametro = 0;
double grosor = 0;
if (diametro > 1.4) {
System.out.println("La rueda es para un vehículo grande");
} else if (diametro > 0.8 && diametro <= 1.4) {
System.out.println("La rueda es para un vehículo mediano");
} else {
System.out.println("La rueda es para un vehículo pequeño");
}
if (diametro > 1.4 && grosor < 0.4 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25) {
System.out.println("El grosor para esta rueda es inferior al recomendado");
}
4
}
}
Considera que estás desarrollando un programa Java donde necesitas trabajar con objetos de tipo
Motor (que representa el motor de una bomba para mover fluidos). Crea un programa donde a través
de un condicional switch hagas lo siguiente:
a) Si el tipo de motor es 0, mostrar un mensaje por consola indicando “No hay establecido un valor
definido para el tipo de bomba”.
b) Si el tipo de motor es 1, mostrar un mensaje por consola indicando “La bomba es una bomba de
agua”.
c) Si el tipo de motor es 2, mostrar un mensaje por consola indicando “La bomba es una bomba de
gasolina”. d) Si el tipo de motor es 3, mostrar un mensaje por consola indicando “La bomba es una
bomba de hormigón”. e) Si el tipo de motor es 4, mostrar un mensaje por consola indicando “La
bomba es una bomba de pasta alimenticia”.
f) Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor válido
para tipo de bomba”.
public class Estudiando {
public static void main(String[] args) {
int tipoBomba = 2;
switch (tipoBomba) {
case 0:
System.out.println("No hay establecido un valor definido para el tipo de bomba.");
break;
case 1:
System.out.println("La bomba es una bomba de agua.");
break;
case 2:
System.out.println("La bomba es una bomba de gasolina.");
break;
case 3:
System.out.println("La bomba es una bomba de hormigón.");
break;
case 4:
System.out.println("La bomba es una bomba de pasta alimenticia.");
break;
default:
System.out.println("No existe un valor válido para tipo de bomba.");
}
}
}
Dado como datos la matrícula de un alumno, el semestre en el que está inscrito, y promedio,
determine si el mismo es apto para pertenecer alguna de las profesiones que tiene la universidad. Si
el alumno es aceptado teniendo en cuenta las especificaciones que se listan abajo se debe imprimir
su matrícula, carrera y la palabra “Aceptado”.
Ingeniería Semestre > 6 y Promedio >= 8.8
Medicina Semestre >=6 y Promedio > 8.5
Licenciatura Semestre > 5 y Promedio >=8.3
Técnico Semestre >=3 y Promedio >=7.8
public class Estudiando {
public static void main(String[] args) {
//CASOS:Ingeniería:I; Medicina:M; Licenciatura:L; Técnico:T
char carrera = 'I';
int semestre = 6;
double promedio = 8.5;
switch (carrera) {
case 'I':
if (semestre > 6 && promedio >= 8.8) {
System.out.println("Matricula");
System.out.println("Tipo de Carrera: " + carrera);
5
System.out.println("Aceptado");
}else{
System.out.println("No aceptado");
}
break;
case 'M':
if (semestre >= 6 && promedio > 8.5) {
System.out.println("Matricula");
System.out.println("Tipo de Carrera: " + carrera);
System.out.println("Aceptado");
}else{
System.out.println("No aceptado");
}
break;
case 'L':
if (semestre > 5 && promedio >= 8.3) {
System.out.println("Matricula");
System.out.println("Tipo de Carrera: " + carrera);
System.out.println("Aceptado");
}else{
System.out.println("No aceptado");
}
break;
case 'T':
if (semestre >= 3 && promedio >= 7.8) {
System.out.println("Matricula");
System.out.println("Tipo de Carrera: " + carrera);
System.out.println("Aceptado");
}else{
System.out.println("No aceptado");
}
break;
default:
System.out.println("No existe la carrera introducida");
}
}
}
6
System.out.println("La nota es de bien");
break;
case 7, 8:
System.out.println("La nota es de notable");
break;
case 9, 10:
System.out.println("La nota es de sobresaliente");
break;
default:
System.out.println("La nota introducida esta fuera de rango");
}
}
}
Evaluar los meses mediante una condicional múltiple switch que evalúe cada uno de
los meses por su número y extraiga por consola el nombre del mes que se está
evaluando.
import java.util.Scanner;
public class Estudiando {
public static void main (String [] args){
int mes;
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un numero (del 1 al 12):");
mes = sc.nextInt();
switch(mes){
case 1:
System.out.println("El mes es enero");
break;
case 2:
System.out.println("El mes es febrero");
break;
case 3:
System.out.println("El mes es marzo");
break;
case 4:
System.out.println("El mes es abril");
break;
case 5:
System.out.println("El mes es mayo");
break;
case 6:
System.out.println("El mes es junio");
break;
case 7:
System.out.println("El mes es julio");
break;
case 8:
System.out.println("El mes es agosto");
break;
case 9:
System.out.println("El mes es septiembre");
break;
case 10:
System.out.println("El mes es octubre");
break;
case 11:
System.out.println("El mes es noviembre");
break;
case 12:
System.out.println("El mes es noviembre");
7
break;
default:
System.out.println("El numero introducido esta fuera del rango");
}
}
}
Construir un programa que calcule y visualice por pantalla el factorial de todos los
valores numéricos enteros entre 1 y 10.
public class Estudiando {
public static void main(String[] args) {
for (int n = 1; n <= 10; n++) {
int f = 1;
for (int i = 2; i <= n; i++) {
f *= i;
}
System.out.println("El factorial de " + n + " es: " + f + "\n");
}
}
}
Crea una clase Java con un método main() que recoja un número del mes del usuario y muestre el
nombre del mes considerando los bisiestos.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numeroDias = 0;
String nombreMes = "Desconocido";
System.out.print("Introduce el número de mes: ");
int mes = input.nextInt();
System.out.print("Introduce el año: ");
int anio = input.nextInt();
8
switch (mes) {
case 1:
nombreMes = "Enero";
numeroDias = 31;
break;
case 2:
nombreMes = "Febrero";
if ((anio % 400 == 0) || ((anio % 4 == 0) && (anio % 100 != 0))) {
numeroDias = 29;
} else {
numeroDias = 28;
}
break;
case 3:
nombreMes = "Marzo";
numeroDias = 31;
break;
case 4:
nombreMes = "Abril";
numeroDias = 30;
break;
case 5:
nombreMes = "Mayo";
numeroDias = 31;
break;
case 6:
nombreMes = "Junio";
numeroDias = 30;
break;
case 7:
nombreMes = "Julio";
numeroDias = 31;
break;
case 8:
nombreMes = "Agosto";
numeroDias = 31;
break;
case 9:
nombreMes = "Septiembre";
numeroDias = 30;
break;
case 10:
nombreMes = "Octubre";
numeroDias = 31;
break;
case 11:
nombreMes = "Noviembre";
numeroDias = 30;
break;
case 12:
nombreMes = "Diciembre";
numeroDias = 31;
}
System.out.println(nombreMes + " de " + anio + " tiene " + numeroDias + " días");
input.close();
}
}
9
Escribe un programa Java que solicite al usuario un solo carácter del alfabeto, mostrando
vocal o consonante, dependiendo de la entrada del usuario. Si la entrada del usuario no es
una letra (entre a y z o A y Z), o es una cadena de longitud> 1, imprime un mensaje de
error. Usar el método toLowerCase() al recoger el valor del usuario para convertir la letra a
minúsculas.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Ingresa un alfabeto: ");
String input = in.next().toLowerCase();
boolean mayuscula = input.charAt(0) >= 65 && input.charAt(0) <= 90;
boolean minuscula = input.charAt(0) >= 97 && input.charAt(0) <= 122;
boolean vocal = input.equals("a") || input.equals("e") || input.equals("i") ||
input.equals("o") || input.equals("u");
if (input.length() > 1) {
System.out.println("Error. No hay un caracter solo.");
} else if (!(mayuscula || minuscula)) {
System.out.println("Error. No hay una letra. Ingrese letra mayuscula o
minuscula.");
} else if (vocal) {
System.out.println("La letra introducida es vocal");
} else {
System.out.println("La letra introducida es consonante");
}
}
}
10
double suma = 0;
String eleccion = "";
do {
System.out.print("Introduce un numero:");
numero1 = sc.nextDouble();
System.out.print("Introduce un numero:");
numero2 = sc.nextDouble();
suma = numero1 + numero2;
System.out.print("Quieres continuar si/no? ");
eleccion = sc.nextLine();
System.out.println(eleccion);
} while (eleccion.equals("si"));
System.out.println("Suma de números: " + suma);
}
}
Pedir una hora de la forma hora, minutos y segundos, y mostrar la hora en el segundo siguiente.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int h, m, s; // hora, minutos y segundos
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca hora: ");
h = sc.nextInt();
System.out.print("Introduzca minutos: ");
m = sc.nextInt();
System.out.print("Introduzca segundos: ");
s = sc.nextInt();
// incrementamos los segundos
s++;
// si los segundos superan 59, los reiniciamos a 0 e incrementamos los minutos
if (s >= 60) {
s = 0;
m++;
// si los minutos superan 59, los reiniciamos a 0 e incrementamos la hora
if (m >= 60) {
m = 0;
h++;
// si la hora supera 23, la reiniciamos a 0
if (h >= 24) {
h = 0;
11
}
}
}
System.out.println("Hora en segundo proximo: " + h + ":" + m + ":" + s);
}
}
Pedir una nota numérica entera entre 0 y 10, y mostrar dicha nota de la forma: cero, uno, dos, tres...
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca una nota numérica entre 0 y 10: ");
num=sc.nextInt();
switch(num){
case 0:
System.out.println("CERO");
break;
case 1:
System.out.println("UNO");
break;
case 2:
System.out.println("DOS");
break;
case 3:
System.out.println("TRES");
break;
case 4:
System.out.println("CUATRO");
break;
case 5:
System.out.println("CINCO");
break;
case 6:
System.out.println("SEIS");
break;
case 7:
System.out.println("SIETE");
break;
case 8:
System.out.println("OCHO");
break;
case 9:
System.out.println("NUEVE");
break;
case 10:
System.out.println("DIEZ");
break;
default:
System.out.println("Número no válido");
}
}
}
Mostrar por consola los 20 primeros números enteros en orden ascendente usando
los bucles while y for.
Por while:
public class Estudiando {
public static void main(String[] args) {
12
int i = 1;
while (i <= 20) {
System.out.println("valor: " + i);
i++;
}
}
}
Por for:
public class Estudiando {
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
System.out.println("valor: " + i);
}
}
}
Pedir números hasta que se teclee un 0, mostrar la suma de todos los números
introducidos.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int num = 0, suma = 0;
Scanner sc = new Scanner(System.in);
do {
System.out.print("Introduzca un número: ");
num = sc.nextInt();
suma = suma + num;
} while (num != 0);
System.out.println("La suma de todos los números es: " + suma);
}
}
Pide un número (que debe estar entre 0 y 10) y mostrar la tabla de multiplicar de dicho
número.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int num = 0;
Scanner sc = new Scanner(System.in);
do {
System.out.print("Introduce número (de 0 a 10): ");
num = sc.nextInt();
} while (!(0 <= num && num <= 10));
System.out.println("\n\nTabla del " + num);
for (int i = 1; i <= 10; i++) {
System.out.println(num + " x " + i + " = " + num * i);
}
}
}
13
Una empresa que se dedica a la venta de pesticidas necesita un programa para gestionar
las facturas. En cada factura figura: el código del artículo, la cantidad vendida en litros y
el precio por litro.
Se pide de 5 facturas introducidas: Facturación total, cantidad en litros vendidos del
artículo 1 y cuantas facturas se emitieron de más de 600 €.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int codigo; // el código del artículo en cada factura
int litros; // la cantidad de litros en cada factura
float precio; // el precio por litro en cada factura
float importe_factura; // guardará el importe de la factura con la que estemos trabajando
float facturacion_total; // el importe de todas las facturas
int litros_cod1; // el total de litros vendidos del producto 1 en todas las facturas
facturacion_total = 0;
litros_cod1 = 0;
int mas_600 = 0;
for (int i = 1; i <= 5; i++) {
System.out.println("Factura nº " + i);
System.out.print("código de producto: ");
codigo = sc.nextInt();
System.out.print("cantidad (litros): ");
litros = sc.nextInt();
System.out.print("precio (litro): ");
precio = sc.nextFloat();
importe_factura = litros * precio;
facturacion_total += importe_factura;
if (codigo == 1) {
litros_cod1 += litros;
}
if (importe_factura >= 600) {
mas_600++;
}
}
System.out.println("\nResumen de ventas\n");
// facturación total
System.out.println("La facturación total es de: " + facturacion_total + "€");
}
}
14
}
}
System.out.println("Aprobados: " + aprobados);
System.out.println("Suspensos: " + suspensos);
System.out.println("Condicionados: " + compensados);
}
}
Crear una aplicación que muestre un contador con 5 dígitos separados por guiones,
que muestre los números del 0-0-0-0-0 al 9-9-9-9-9, con la particularidad que cada vez
que aparezca un 3 lo sustituya por una E.
public class Ejercicio9 {
public static void main(String[] args) {
for (int i = 0; i <= 9; i++) {
for (int j = 0; j <= 9; j++) {
for (int k = 0; k <= 9; k++) {
for (int l = 0; l <= 9; l++) {
for (int m = 0; m <= 9; m++) {
if (i == 3) {
System.out.print("E");
} else {
System.out.print(i);
}
if (j == 3) {
System.out.print("E");
} else {
System.out.print(j);
}
if (k == 3) {
System.out.print("E");
} else {
System.out.print(k);
}
if (l == 3) {
System.out.print("E");
} else {
System.out.print(l);
}
if (m == 3) {
System.out.print("E");
} else {
System.out.print(m);
}
System.out.println(" ");
}
}
}
}
}
}
}
Realiza el programa Java que solicite el sueldo de un trabajador, le aplique un aumento del
15% si su sueldo es inferior a $1000 y 12% en caso contrario. Mostrar por consola el nuevo
sueldo del trabajador.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
float sue, nsue = 0;
15
System.out.print("ingrese sueldo: ");
sue = teclado.nextFloat();
if (sue != 1000) {
if (sue < 1000) {
nsue = (float) (sue * 1.15);
}
if (sue > 1000) {
nsue = (float) (sue * 1.12);
}
System.out.println("el sueldo final es: " + nsue);
}
if (sue == 1000) {
System.out.println("el sueldo final es: " + sue);
}
}
}
Realizar un programa Java que indique el total a pagar en una factura de acuerdo a:
∙ 0 a 500€ 0% de descuento
∙ 501€ a 1000 5%
∙ 1001€ a 7000 11%
∙ 7001€ a 15000€ 18% ∙ 150001€ en
adelante 25%
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner teclado= new Scanner (System.in);
float importe,total = 0;
System.out.print("ingrese total factura: ");
importe=teclado.nextFloat();
if(importe<501)
total=importe;
16
if(importe>499 & importe<1000)
total= (float) (importe * 0.95);
if(importe>999 & importe<7001)
total=(float) (importe * 0.89);
if(importe>7000 & importe<15001)
total=(float)(importe * 0.82);
if(importe>15000)
total= (float) (importe * 0.75);
System.out.println("el total a pagar es: "+total);
}
}
17
suma_alt = suma_alt + altura;
}
media_edad = suma_edad / 5;
media_altura = suma_alt / 5;
System.out.println("\n\nLa edad media es de: " + media_edad);
System.out.println("La altura media es de: " + media_altura);
System.out.println("Mayor de 18 años: " + mayor_edad);
System.out.println("Mayor de 1.75: " + mayor_175);
}
}
RETO NAVIDAD:
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int nCasos;
int dia, mes;
Scanner sc = new Scanner(System.in);
System.out.println("Introduce el nº de casos");
nCasos = sc.nextInt();
for (int i = 0; i < nCasos; i++)
{
System.out.println("Introduce el día:");
dia= sc.nextInt();
System.out.println("Introduce el mes:");
mes= sc.nextInt();
if (dia == 25 && mes == 12)
System.out.println("SI");
else
System.out.println("NO");
}
}
}
EJERCICIOS PROPIOS:
Programa que pide el precio de 5 boletos y muestra cuántos se vendieron de cada uno y el precio de
la compra.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
{
Scanner teclado = new Scanner(System.in);
int p1, p2, p3, p4, p5, ap1 = 0, ap2 = 0, ap3 = 0, ap4 = 0, ap5 = 0, clave, cant, recau = 0, pre = 0;
System.out.print("precio 1: ");
18
p1 = teclado.nextInt();
System.out.print("precio 2: ");
p2 = teclado.nextInt();
System.out.print("precio 3: ");
p3 = teclado.nextInt();
System.out.print("precio 4: ");
p4 = teclado.nextInt();
System.out.print("precio 5: ");
p5 = teclado.nextInt();
System.out.print("clave: ");
clave = teclado.nextInt();
System.out.print("cant: ");
cant = teclado.nextInt();
if (clave != -1 & cant != -1) {
switch (clave) {
case 1:
pre = p1 * cant;
ap1 += cant;
break;
case 2:
pre = p2 * cant;
ap2 += cant;
break;
case 3:
pre = p3 * cant;
ap3 += cant;
break;
case 4:
pre = p4 * cant;
ap4 += cant;
break;
case 5:
pre = p5 * cant;
ap5 += cant;
break;
}
System.out.print("\nclave del boleto: " + clave + "\nprecio: " + pre + "\ncantidad: " + cant);
recau = recau + pre;
System.out.print("\n\nclave: ");
clave = teclado.nextInt();
System.out.print("cant: ");
cant = teclado.nextInt();
}
System.out.println("\nvoletos vendidos tipo 1: " + ap1 + "\nvoletos vendidos tipo 2: " + ap2
+ "\nvoletos vendidos tipo 3: " + ap3 + "\nvoletos vendidos tipo 4: " + ap4
+ "\nvoletos vendidos tipo 5: " + ap5 + "\ntotal recaudado: " + recau);
}
}
}
19
tot = num;
for (i = 2; i <= ele; i++) {
tot *= num;
}
System.out.println("total= " + tot);
}
}
Programa que indica la cantidad de lluvias en la región norte, sur, centro, cada mes.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int arsu = 0, arno = 0, arce = 0, rno, rce, rsu, i, mersu = 999999, prorce, mes = 0;
for (i = 1; i <= 12; ++i) {
System.out.print("lluvia region NORTE mes " + i + ": ");
rno = teclado.nextInt();
System.out.print("lluvia region CENTRO mes " + i + ": ");
rce = teclado.nextInt();
System.out.print("lluvia región SUR mes " + i + ": ");
rsu = teclado.nextInt();
arno += rno;
arce += rce;
arsu += rsu;
if (rsu < mersu) {
mersu = rsu;
mes = i;
}
}
prorce = arce / 12;
System.out.println("\npromedio de la region CENTRO: " + prorce + "\n mes con menor lluvia reg.SUR: "
+ mes + "\n Registro del mes: " + mersu);
if (arno > arce) {
if (arno > arsu) {
System.out.println("la region con mayor lluvia es la Region NORTE");
} else {
System.out.println("la region con mayor lluvia es la Region SUR");
}
} else if (arce > arsu) {
System.out.println("la region con mayor lluvia es la Region CENTRO");
} else {
System.out.println("la region con mayor lluvia es la Region SUR");
}
}
}
20
Calcular el factorial de un numero pedido por teclado.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
int fact = 1;
int num = 0;
System.out.println("Introduce numero");
num = teclado.nextInt();
for (int i = 1; i <= num; i++) {
fact *= i;
}
System.out.println("factorial es " + fact);
}
}
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
String nombre;
int edad;
float salario, salar;
System.out.println("introduce un nombre: ");
nombre = teclado.nextLine();
System.out.println();
System.out.println("introduce una edad: ");
edad = teclado.nextInt();
System.out.println();
System.out.println("introduce un salario: ");
salario = teclado.nextFloat();
System.out.println();
if (edad >= 16 && edad <= 18) {
21
salar = salario;
System.out.println(nombre + " con " + edad + " a\u00f1os cobra " + salario + " + 0% = " + salar);
} else if (edad >= 19 && edad <= 50) {
salar = salario + ((salario * 5) / 100);
System.out.println(nombre + " con " + edad + " a\u00f1os cobra " + salario + " + 5% = " + salar);
} else if (edad >= 51 && edad <= 60) {
salar = salario + ((salario * 10) / 100);
System.out.println(nombre + " con " + edad + " a\u00f1os cobra " + salario + " + 10% = " + salar);
} else if (edad > 60) {
salar = salario + ((salario * 15) / 100);
System.out.println(nombre + " con " + edad + " a\u00f1os cobra " + salario + " + 15% = " + salar);
} else if (edad < 16) {
System.out.println("No tienes edad para trabajar");
}
}
}
Declara dos variables numéricas (con el valor que desees), muestra por consola la suma, resta,
multiplicación, división y módulo (resto de la división).
public class Estudiando {
public static void main(String[] args) {
int num1 = 10;
int num2 = 5;
System.out.println("El resultado de la suma es " + (num1 + num2));
System.out.println("El resultado de la resta es " + (num1 - num2));
System.out.println("El resultado de la multiplicación es " + (num1 * num2));
System.out.println("El resultado de la división es " + (num1 / num2));
}
}
Lee un número por teclado e indica si es divisible entre 2 (resto = 0). Si no lo es, también debemos
indicarlo.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un numero");
int numero=sc.nextInt();
if (numero%2==0){
System.out.println("El numero "+numero+" es divisible entre 2");
}else{
System.out.println("El numero "+numero+" no es divisible entre 2");
}
}
}
Muestra los números del 1 al 100 (ambos incluidos). Usa un bucle while.
public class Estudiando {
22
public static void main(String[] args) {
int num=1;
while (num<=100){
num++;
}
}
}
Muestra los números del 1 al 100 (ambos incluidos). Usa un bucle for.
public class Estudiando{
public static void main(String[] args) {
for (int num=1;num<=100;num++){
System.out.println(num);
}
}
}
➔ EJERCICIOS NÚMEROS POSITIVOS, NEGATIVOS O NULOS:
Crear una variable, inicializar su valor y evaluar si es un número positivo, nulo o negativo. Escribir un
mensaje por consola informando al usuario de cada caso.
public class Estudiando {
public static void main(String[] args) {
int numero = 6;
if (numero > 0) {
System.out.println("El número: " + numero + " es positivo");
} else if (numero < 0) {
System.out.println("El número: " + numero + " es negativo");
} else {
System.out.println("El número:" + numero + " es nulo");
}
}
}
Pedir números hasta que se teclee uno negativo, y mostrar cuántos números se
han introducido.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
int num, contador;
// num guardará los números introducidos
// y contador se incrementará para llevar la cuenta de los números introducidos
System.out.print("Introduzca un número: ");
Scanner sc = new Scanner(System.in);
num=sc.nextInt();
contador=0; // al comienzo el número de números introducidos es 0
while(num>0) // mientras num sea positiva
{
contador =contador+1; // contador toma el valor que tuviera en este momento más
uno
// en definitiva: contador se incrementa en uno
System.out.print("Introduzca otro número: ");
num=sc.nextInt();
}
System.out.println("Se han introducido: " +contador + " números");
// sin tener en cuenta el último número negativo.
}
}
24
System.out.println ("El numero "+numero+" es positivo\n");
}
if(numero%2==0) {
System.out.println ("El numero "+numero+" es par\n");
}
else {
System.out.println ("El numero "+numero+" es impar\n");
}
}
}
➔ EJERCICIOS DE MENÚ:
Considerar una variable entera con nombre opción que atiende al cálculo de las áreas de
determinadas figuras geométricas de acuerdo al siguiente orden: 1.-Area del cuadrado; 2.-Area del
triángulo 3.- Área del círculo. Realiza un programa que use la condicional switch.
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int opcion;
System.out.println("Menu de opciones");
System.out.println("------------------------");
System.out.println("1.Calcular el área de un cuadrado");
System.out.println("2. Calcular el area de un Triangulo");
System.out.println("3. Calcular el area de un Circulo");
System.out.println("4. finalizar");
System.out.print("Elija la opcion:");
opcion = entrada.nextInt();
switch (opcion) {
case 1:
System.out.println("Ha seleccionado calcular el area de un cuadrado...");
int base;
int altura;
double areaCuadrado;
25
System.out.println("Cual es la base del cuadrado");
base = entrada.nextInt();
System.out.println("Cual es la altura del cuadrado");
altura = entrada.nextInt();
areaCuadrado = base * altura;
System.out.printf("El area del cuadrado es %f\n", areaCuadrado);
break;
case 2:
System.out.println("Ha seleccionado calcular el area de un triangulo...");
int lado1;
int lado2;
int lado3;
double areaTriangulo;
System.out.print("Dame el lado1");
lado1 = entrada.nextInt();
System.out.print("Dame el lado2");
lado2 = entrada.nextInt();
System.out.print("Dame el lado3");
lado3 = entrada.nextInt();
areaTriangulo = (lado1 * lado2) / 2;
System.out.printf("El area del triangulo es %f\n", areaTriangulo);
break;
case 3:
System.out.println("Ha seleccionado calcular el area de un circulo...");
int radioCirculo;
double areaCirculo;
System.out.print("Cual es el radio del circulo?");
radioCirculo = entrada.nextInt();
areaCirculo = 3.1416 * (radioCirculo * radioCirculo);
System.out.printf("El area del circulo es %f\n", areaCirculo);
break;
default:
System.out.println("Ha seleccionado terminar");
}
}
}
26
opcion = sc.nextInt();
switch(opcion){
case 1:
System.out.println("Has seleccionado la opcion 1:");
int n;
for(n=1; n <= 10; n++)
System.out.print(n);
System.out.print("\n");
break;
case 2:
System.out.println("Has seleccionado la opcion 2:");
int num = 8;
double multi;
for(int a=1; a<=10; a++){
multi = num*a;
System.out.println("Tabla del 8: " + (int)multi);
}
break;
case 3:
System.out.println("Has seleccionado la opcion 3:");
int contador;
for(contador = 1; contador <= 10; contador++)
System.out.println((int)Math.pow(2, contador));
break;
case 4:
salir=true;
break;
default:
System.out.println("Las opciones son entre 1 y 4:");
}
}
System.out.println("Fin del menu.");
}
}
Opción 2:
public class Estudio {
public static void main(String[] args)
{
char opcion;
int numero, contador, resultado;
Scanner teclado = new Scanner(System.in);
do
{
System.out.println(">>> MENÚ DE OPCIONES <<<");
System.out.println("1. Números del 1 al 10.");
System.out.println("2. Tabla de multiplicar del 8.");
System.out.println("3. Primeras diez potencias de 2.");
System.out.println("4. Salir.");
do
{
System.out.printf("\nIntroduzca opción (1-4): ");
opcion = teclado.next().charAt(0);
}
while(opcion < '1' || opcion > '4');
System.out.printf("\n");
switch(opcion)
{
27
case '1': for(numero = 1; numero <= 10; numero++)
System.out.println(numero);
break;
case '2': for(contador = 1; contador <= 10; contador++)
{
resultado = contador * 8;
System.out.println(resultado);
}
break;
case '3': for(contador = 1; contador <= 10; contador++)
System.out.println(Math.pow(2, contador));
}
}
while(opcion != '4');
}
Realiza un programa Java para concatenar una cadena dada al final de otra cadena.
Opcion1:
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
String palabra1 = "hola";
String palabra2 = "que tal";
String palabra3 = palabra1.concat(" ").concat(palabra2);
System.out.println(palabra3);
}
}
Opcion2:
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
String palabra1="hola";
String palabra2=" que tal";
String palabra3= palabra1.concat(palabra2);
System.out.println(palabra1 + palabra2);
}
}
28
Escribe un programa para revertir los caracteres de una cadena (Ejemplo: “Programa
uno” su salida será “onu amargorP”).
Opcion1:
public class Estudiando {
public static void main(String[] args){
String cadena= "Programa uno";
String cadenaInvertida= "";
for (int i = cadena.length()-1;i>=0;i--){
cadenaInvertida+= cadena.charAt(i);
}
System.out.println("cadena invertida = " + cadenaInvertida);
}
}
Opcion2:
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Introduce una cadena: ");
String cadena= sc.nextLine();
String cadenaInvertida= "";
for (int i = cadena.length()-1;i>=0;i--){
cadenaInvertida+= cadena.charAt(i);
}
System.out.println("cadena antigua = " + cadena);
System.out.println("cadena invertida = " + cadenaInvertida);
sc.close();
}
}
Escribe un programa Java para leer una cadena y devolver verdadero si termina en "ba".
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
System.out.println("Introduce una cadena: ");
Scanner sc = new Scanner(System.in);
String frase = sc.nextLine();
int longitud = frase.length();
if (longitud>=2)
{
//Extraemos parte de la cadena que necesitamos
String finalFrase = frase.substring(longitud-2, longitud);
if (finalFrase.equalsIgnoreCase("ba"))
System.out.println("VERDADERO");
else
System.out.println("FALSO");
}
else
{
System.out.println("La cadena no tiene dos caracteres");
}
}
}
Escribe un programa Java para leer dos cadenas, concatenarlas y mostrar el resultado en la consola.
Si las cadenas tienen longitudes diferentes, omite los caracteres desde el comienzo de la cadena más
larga y haga que tengan la misma longitud antes de unirlas. NO CORRECTO
import java.util.Scanner;
public class Estudiando {
public static void main(String[] args) {
29
Scanner sc = new Scanner(System.in);
String Cadena = "Hola";
String Cadena2 = " que tal";
System.out.println("Cadena de Texto: " + Cadena + Cadena2);
System.out.println("Tamaño de la cadena: " + Cadena.length() + Cadena2.length() + " caracteres");
}
}
//getters y setters
public String getAutor() {
return autor;
}
Escribe una clase Cuenta para representar una cuenta bancaria. Los datos de la cuenta son: nombre
del cliente (String), número de cuenta (String), tipo de interés (double) y saldo (double). La clase
contendrá los siguientes métodos: Constructor por defecto Constructor con todos los parámetros
Constructor copia. Métodos setters/getters para asignar y obtener los datos de la cuenta. Métodos
31
ingreso y reintegro. Un ingreso consiste en aumentar el saldo en la cantidad que se indique. Esa
cantidad no puede ser negativa. Un reintegro consiste en disminuir el saldo en una cantidad pero
antes se debe comprobar que hay saldo suficiente. La cantidad no puede ser negativa. Los métodos
ingreso y reintegro devuelven true si la operación se ha podido realizar o false en caso contrario.
Método transferencia que permita pasar dinero de una cuenta a otra siempre que en la cuenta de
origen haya dinero suficiente para poder hacerla. Ejemplo de uso del método transferencia:
cuentaOrigen.transferencia(cuentaDestino, importe); que indica que queremos hacer una
transferencia desde cuentaOrigen a cuentaDestino del importe indicado.
public class Cuenta {
private String nombre;
private String numeroCuenta;
private double tipoInteres;
private double saldo;
//Constructor copia
public Cuenta(final Cuenta c) {
nombre = c.nombre;
numeroCuenta = c.numeroCuenta;
tipoInteres = c.tipoInteres;
saldo = c.saldo;
}
//getters y setters
public void setNombre(String s) {
nombre = s;
}
//método ingreso
public boolean ingreso(double n) {
boolean ingresoCorrecto = true;
if (n < 0) {
ingresoCorrecto = false;
} else {
saldo = saldo + n;
}
return ingresoCorrecto;
}
//método reintegro
public boolean reintegro(double n) {
boolean reintegroCorrecto = true;
if (n < 0) {
reintegroCorrecto = false;
} else if (saldo >= n) {
saldo -= n;
} else {
reintegroCorrecto = false;
}
return reintegroCorrecto;
}
Crea una clase llamada Contador que contenga un único atributo entero llamado cont. La clase tendrá
los siguientes constructores: Curso 2020-2021 PROGRAMACIÓN 1º DAMT POO_Hoja 1 2 Constructor
por defecto Constructor con parámetros para inicializar el contador con un valor no negativo. Si el
valor inicial que se recibe es negativo el contador tomará el valor cero como valor inicial. Constructor
copia. Además de los métodos getter y setter, la clase contendrá los métodos: incrementar:
incrementa el contador en una unidad. decrementar: decrementa el contador en una unidad. El
contador nunca podrá tener un valor negativo. Si al decrementar se alcanza un valor negativo el
contador toma el valor cero. Una vez creada la clase, escribe un método main para probar la clase.
public class Contador {
private int cont;
33
//constructor por defecto
public Contador() {
}
//constructor copia
public Contador(final Contador c) {
cont = c.cont;
}
//getter
public int getCont() {
return cont;
}
//setter
public void setCont(int cont) {
if (cont < 0) {
this.cont = 0;
} else {
this.cont = cont;
}
}
Crear una clase Temperatura que convierta grados Celsius a Farenheit y viceversa. Para ello crear los
métodos: double celsiusToFarenheit (double) double farenheitToCelsius (double) sabiendo que F =
C*1.8 + 32
public class Temperatura {
34
public Temperatura()
{
return resultado;
}
return resultado;
}
Construir una clase Coche con un atributo velocidad de tipo entero. Elabora los métodos siguientes:
int getVelocidad devuelve la velocidad actual void acelera (int kms) aumenta la velocidad en kms
pasado como parámetro. void frena (int kms) disminuye la velocidad en kms pasado como
parámetro.
public class Coche {
Implementar la clase Consumo, que forma parte de la centralita electrónica de un coche con los
siguientes atributos: kms recorridos, litros consumidos, velocidad media y precio de la gasolina. Se
deben implementar los siguientes métodos: getTiempo: indicará el tiempo empleado en realizar el
viaje. consumoMedio: consumo medio del vehículo (en litros cada 100Km). consumoEuros: consumo
medio del vehículo (en euros cada 100km).
public class Consumo {
public Consumo() {
kms = 200.70;
litros = 50;
velocidadM= 85;
precioL =1.15;
36
public void setLitros(double litros) {
this.litros = litros;
}
37
Crear una clase llamada Maquina que simula una máquina expendedora de euros, cuyos atributos
número de elementos de tipo entero son las monedas a introducir, numeroHuecos y capacidad, de
tipos short y float, indican el número de huecos y la capacidad de la máquina respectivamente así
como el atributo caja de tipo float, que indica el dinero total que tiene la máquina en ese momento.
Realizar los métodos siguientes: hayHuecos(): devuelve un booleano que indica si hay huecos.
hayCapacidad(): devuelve un booleano que devuelve verdadero si hay capacidad. meterContenedor()
y sacarContenedor() que disminuyen o aumentan el número de huecos de la máquina.
meterElemento() y sacarElemento () que aumentan o disminuyen el número de elementos (monedas)
de la máquina.
public class Maquina {
public Maquina() {
this.numElementos=25;
this.numeroHuecos= 25;
this.capacidad= 45.5f;
this.caja= 2050.50f;
if (this.numeroHuecos > 0) {
hay = true;
}
return hay;
}
if (this.capacidad > 0)
hay = true;
return hay;
}
public Votacion() {
this.nombre="María López";
this.edad=40;
this.numeroVotos=100;
}
40
public void setNumeroVotos(int numeroVotos) {
this.numeroVotos = numeroVotos;
}
/*
• buscaMejorCandidato(int edadMinima) que pasando como parámetro la edad mínima para ser
representante, mira si su edad es superior a la mínima
y si el número de votos es mayor de 100, devolviendo verdadero si se
cumplen las dos condiciones y falso en caso contrario.
• costeCampaña(double costePublicidad, double costesVarios) que recibe como parámetro
los costes totales de toda la campaña y devuelve el coste total suponiendo que por cada voto
se deben restar 100€ al bloque costesVarios; además si la edad de cada candidato
es mayor de 50 años se restan 20€ al coste total.
*/
public boolean buscaMejorCandidato(int edadMinima)
{
boolean ok = false;
if (this.numeroVotos>100 && this.edad>edadMinima)
ok = true;
return ok;
}
//setters y getters
public void setDia(int d) {
dia = d;
}
public void setMes(int m) {
mes = m;
}
public void setAño(int a) {
año = a;
}
public int getDia() {
return dia;
}
public int getMes() {
return mes;
}
public int getAño() {
return año;
}
}
}
@Override
public String toString() {
String ok="";
return ok;
}
}
43
Realiza una clase llamada Trabajador que posee un código alfanumérico que lo identifica en el trabajo,
el nombre y apellido, la edad, la categoría y la condición definidos como char. Esta clase tendrá el
constructor por defecto y con todos los atributos de la clase, los modificadores y selectores así como
el toString() usando StringBuilder . Desarrolla los métodos siguientes: *método sueldoBruto() que
devuelve el sueldo bruto, que se definirá en función de la categoría (valores posibles S y A) y la
condición (valores posibles C, E y S) de modo siguiente: Si la categoría es S Si la condición es C el
sueldo base son 2000€, si es E el sueldo base es 2500€ y si es S el sueldo base son 1800€. Si la
categoría es A Si la condición es C el sueldo base son 2200€, si es E el sueldo base es 2700€ y si es S
el sueldo base son 1900€. * método acabaenA() que revisa si el nombre del trabajador tiene más de 4
caracteres de longitud y acaba en a, devolviendo verdadero si ese caso, o bien, falso si no cumple las
condiciones. *método buscaTrabajador(edad) que recibe como parámetros la edad mínima y una
categoría y debe devolver una cadena si se cumplen las condiciones: Si su edad es inferior a la edad
pasada como parámetro y su categoría es “S” devolverá “SA”. Si la edad es superior o igual a la
recibida como parámetro y la categoría es “A” entonces devuelve “MA”. En cualquier otro caso
devuelve “NA”. Realiza la clase PruebasTrabajador para probar todos los métodos creando al menos
dos objetos de esta clase, uno con el constructor por defecto y otro con el constructor con
parámetros.
* Realiza una clase llamada Trabajador que posee un código alfanumérico que
* lo identifica en el trabajo, el nombre y apellido, la edad, la categoría y la
* condición definidos como char.
Esta clase tendrá el constructor por defecto y con todos los atributos de la clase, los
modificadores y selectores así como el toString() usando StringBuilder
*/
public class Trabajador {
private String codigo;
private String nombre;
private String apellido;
private int edad;
private char categoria, condicion;
public Trabajador() {
this.codigo="12";
this.nombre="María";
this.apellido = "Perez";
this.edad=25;
this.categoria='S';
this.condicion='C';
public Trabajador( String codigo, String nombre,String apellido,int edad,char categoria, char condicion)
{
this.codigo=codigo;
this.nombre=nombre;
this.apellido = apellido;
this.edad=edad;
this.categoria=categoria;
this.condicion=condicion;
}
/**
* el sueldo bruto se definirá en función de la categoría (valores posibles S y A)
* y la condición (valores posibles C, E y S)
* @return devuelve el sueldo bruto.
44
*/
switch(this.categoria)
{
case 'S':
switch(this.condicion)
{
case 'C': resultado=2000;
break;
case 'E': resultado=2500;
break;
case 'S':resultado=1800;
break;
default:System.out.println("Condición incorrecta.");
}
break;
case 'A':
switch(this.condicion)
{
case 'C': resultado=2200;
break;
case 'E': resultado=2700;
break;
case 'S':resultado=1900;
break;
default:System.out.println("Condición incorrecta.");
}
break;
default: System.out.println("Categoria incorrecta.");
}
return resultado;
}
/**
* revisa si el nombre del trabajador tiene más de 4 caracteres de
longitud y acaba en a
* @return
*/
public boolean acabaenA()
{
if (this.nombre.length()>4 && (this.nombre.endsWith("a") || this.nombre.endsWith("A")))
return true;
else
return false;
}
/**
* método buscaTrabajador(edad) que recibe como parámetros la edad mínima y una categoría
* y debe devolver una cadena si se cumplen las condiciones:
45
Si su edad es inferior a la edad pasada como parámetro y su categoría es “S”
devolverá “SA”.
Si la edad es superior o igual a la recibida como parámetro y la categoría es “A”
entonces devuelve “MA”.
En cualquier otro caso devuelve “NA”.
* @param edad
* @return
*/
public String buscaTrabajador (int edad)
{
String cadena="";
if (this.edad<edad && this.categoria=='S')
cadena="SA";
else if(this.edad>edad && this.categoria=='A')
cadena= "MA";
else
cadena="NA";
return cadena;
}
public static void main(String[] args) {
Trabajador trabajador = new Trabajador();
Trabajador trabajador2 = new Trabajador ("codigo","nombre","apellido",30,'S', 'C');
double sueldo = trabajador2.sueldoBruto();
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int num=0;
do{
System.out.println("Introduce un numero entre 10 y 30: ");
num=teclado.nextInt();
}while(num<10 || num>30);
int cuadrado=(int)Math.pow(num,2);
boolean hyperpar=true;
46
while(cuadrado>0){
int cifra=cuadrado%10;
cuadrado=cuadrado/10;
if(cifra%2!=0){
hyperpar=false;
}
}
if(hyperpar==true){
System.out.println("El cuadrado es hyperpar");
}else{
System.out.println("El cuadrado no es hyperpar");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner teclado=new Scanner(System.in);
int x,y,alto,ancho;
int opc=0;
System.out.println("Introduce la coordenada (x,y): ");
x=teclado.nextInt();
y=teclado.nextInt();
System.out.println("Introduce el alto: ");
alto=teclado.nextInt();
System.out.println("Introduce el ancho: ");
ancho=teclado.nextInt();
if(alto<=0 ||ancho<=0){
System.out.println("No se puede continuar, datos erroneos");
}else{
do{
System.out.println("Menu");
System.out.println("1.- Calcular el area");
System.out.println("2.- Calcular la longitud de la diagonal");
System.out.println("3.- Devolver el punto opuesto");
System.out.println("4.- Salir");
System.out.println("Introduce opción: ");
opc=teclado.nextInt();
switch(opc){
case 1:
System.out.println("El area es: "+(alto*ancho));
if (alto==ancho)
System.out.println("Es un cuadrado");
break;
47
case 2:
System.out.println("La longitud es "+Math.sqrt(Math.pow(ancho, 2)+Math.pow(alto, 2)));
break;
case 3:
System.out.println("La coordenada opuesta es: ("+(x+ancho)+","+(y+alto)+")");
break;
default:
}
}while(opc!=4);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int A, B, m;
Scanner teclado = new Scanner(System.in);
do {
System.out.println("Introduce A: ");
A = teclado.nextInt();
} while (A <= 0);
do {
System.out.println("Introduce B: ");
B = teclado.nextInt();
} while (B <= 0);
do {
System.out.println("Introduce m: ");
m = teclado.nextInt();
} while (m <= 0);
48
ESTRUCTURA POO:
49
STRING:
- TÍTULO
- AUTOR
- NOMBRE
- NÚMERO CUENTA
- CÓDIGO
- APELLIDO
DOUBLE:
- TIPO INTERES
- SALDO
- KMS
- LITROS
- VELOCIDAD METROS
- PRECIO LITRO
-
INT:
- EDAD
- AÑO
- MES
- DIA
- NÚMERO VOTOS
- NÚMERO ELEMENTOS
- VELOCIDAD
- PRESTADOS
- EJEMPLARES
FLOAT:
- CAPACIDAD
- CAJA
CHAR:
- CATEGORÍA
- CONDICIÓN
SHORT:
- NÚMERO HUECOS
50