Hola a todos, hoy os dejo una serie de ejercicios de Java para practicar todo aquello que hemos explicado en anteriores posts, haciendo hincapié en los métodos y funciones.
Todos los ejercicios que proponemos estan resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.
El nombre de la aplicación es de tu elección. Crea un proyecto en Java por ejercicio.
Colocare en las soluciones algunos comentarios para que sean más fácilmente entendible. Te recomiendo que uses mensajes de trazas, donde te sean necesarios. Si tienes problemas también puedes usar el depurador.
Aquí tienes todos los posts relacionados con Java:
También tenemos el curso en formato video:
Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es
1) Crea una aplicación que nos calcule el área de un circulo, cuadrado o triangulo. Pediremos que figura queremos calcular su área y según lo introducido pedirá los valores necesarios para calcular el área. Crea un método por cada figura para calcular cada área, este devolverá un número real. Muestra el resultado por pantalla
Aquí te mostramos que necesita cada figura:
- Circulo: (radio^2)*PI
- Triangulo: (base * altura) / 2
- Cuadrado: lado * lado
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import javax.swing.JOptionPane; public class AreaApp { public static void main(String[] args) { //Declaramos esta variable para reutilizarla y no tener que declarar tantas variables String texto=""; //Declaramos esta variable para mostrar al final el resultado double resultado=0; String eleccion=JOptionPane.showInputDialog("Introduce una figura: circulo, triangulo o cuadrado"); switch (eleccion){ //Segun la figura realizamos una serie de acciones case "circulo": texto=JOptionPane.showInputDialog("Introduce el radio"); int radio=Integer.parseInt(texto); resultado=areaCirculo(radio); break; case "triangulo": texto=JOptionPane.showInputDialog("Introduce la base"); int base=Integer.parseInt(texto); texto=JOptionPane.showInputDialog("Introduce la altura"); int altura=Integer.parseInt(texto); resultado=areaTriangulo(base, altura); break; case "cuadrado": texto=JOptionPane.showInputDialog("Introduce la medida de un lado"); int lado=Integer.parseInt(texto); resultado=areaCuadrado(lado); break; default: System.out.println("No has introducido una figura correcta"); } System.out.println("El area del "+eleccion+" es "+resultado); } public static double areaCirculo (int radio){ return Math.pow(radio, 2)*Math.PI; } public static double areaTriangulo (int base, int altura){ return base*altura/2; } public static double areaCuadrado (int lado){ return lado*lado; } } |
2) Crea una aplicación que nos genere una cantidad de números enteros aleatorios que nosotros le pasaremos por teclado. Crea un método donde pasamos como parámetros entre que números queremos que los genere, podemos pedirlas por teclado antes de generar los números. Este método devolverá un número entero aleatorio. Muestra estos números por pantalla.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import javax.swing.JOptionPane; public class MuestraNumerosApp { public static void main(String[] args) { //Introducimos los datos necesarios String texto=JOptionPane.showInputDialog("Introduce el limite"); int limite=Integer.parseInt(texto); texto=JOptionPane.showInputDialog("Introduce un numero"); int numero1=Integer.parseInt(texto); texto=JOptionPane.showInputDialog("Introduce un numero"); int numero2=Integer.parseInt(texto); //generamos los numeros for(int i=0;i<limite;i++){ System.out.println(generaNumero(numero1, numero2)); } } public static int generaNumero(int num1, int num2){ return ((int)Math.floor(Math.random()*(num2-num1)+num1)); } } |
3) Crea una aplicación que nos pida un número por teclado y con un método se lo pasamos por parámetro para que nos indique si es o no un número primo, debe devolver true si es primo sino false.
Un número primo es aquel solo puede dividirse entre 1 y si mismo. Por ejemplo: 25 no es primo, ya que 25 es divisible entre 5, sin embargo, 17 si es primo.
Un buen truco para calcular la raíz cuadrada del numero e ir comprobando que si es divisible desde ese numero hasta 1.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import javax.swing.JOptionPane; public class PrimoApp { public static void main(String[] args) { String texto=JOptionPane.showInputDialog("Introduce un numero"); int numero=Integer.parseInt(texto); //Ejecutamos la funcion, como devuelve true o false, se puede colocar en un if" if (esPrimo(numero)){ System.out.println("El numero "+numero+" es primo"); }else{ System.out.println("El numero "+numero+" no es primo"); } } public static boolean esPrimo (int numero){ //Un numero menor o igual que 1, no es primo. if (numero<=1){ return false; } //Declaramos esta variable aqui ya que despues es usada" int cont=0; for (int divisor=(int)Math.sqrt(numero);divisor>1;divisor--){ //contabilizados los divisibles" if (numero%divisor==0){ cont+=1; } } //Según el numero de divisibles es o no primo" if (cont>=1){ return false; }else{ return true; } } } |
4) Crea una aplicación que nos calcule el factorial de un número pedido por teclado, lo realizara mediante un método al que le pasamos el número como parámetro. Para calcular el factorial, se multiplica los números anteriores hasta llegar a uno. Por ejemplo, si introducimos un 5, realizara esta operación 5*4*3*2*1=120.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import javax.swing.JOptionPane; public class FactorialApp { public static void main(String[] args) { String texto=JOptionPane.showInputDialog("Introduce un numero"); int numero=Integer.parseInt(texto); System.out.println("El factorial de "+numero+ " es " +factorial(numero)); } public static int factorial (int numero){ int res=numero; //Se inicia con el numero anterior al que introducimos for(int cont=(numero-1);cont>0;cont--){ //Acumulamos el resultado res=res*cont; } return res; } } |
5) Crea una aplicación que nos convierta un número en base decimal a binario. Esto lo realizara un método al que le pasaremos el numero como parámetro, devolverá un String con el numero convertido a binario. Para convertir un numero decimal a binario, debemos dividir entre 2 el numero y el resultado de esa división se divide entre 2 de nuevo hasta que no se pueda dividir mas, el resto que obtengamos de cada división formara el numero binario, de abajo a arriba.
Veamos un ejemplo: si introducimos un 8 nos deberá devolver 1000
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import javax.swing.JOptionPane; public class DecimalBinarioApp { public static void main(String[] args) { String texto=JOptionPane.showInputDialog("Introduce un numero"); int numero=Integer.parseInt(texto); String binario=decimalBinario(numero); System.out.println("El numero "+numero+ " en binario es "+binario); } public static String decimalBinario (int numero){ String binario=""; String digito; for(int i=numero;i>0;i/=2){ if(i%2==1){ digito="1"; }else{ digito="0"; } //Se añade el digito al principio (mira la imagen del post) binario=digito+binario; } return binario; } } |
6) Crea una aplicación que nos cuente el número de cifras de un número entero positivo (hay que controlarlo) pedido por teclado. Crea un método que realice esta acción, pasando el número por parámetro, devolverá el número de cifras.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import javax.swing.JOptionPane; public class CuentaCifrasApp { public static void main(String[] args) { int numero=0; do{ String texto=JOptionPane.showInputDialog("Introduce un numero positivo"); numero=Integer.parseInt(texto); }while(numero<0); int numCifras=cuentaCifras(numero); //Controlamos en el caso de que haya una cifra o mas if (numCifras==1){ System.out.println("El numero "+numero+ " tiene "+numCifras+" cifra"); }else{ System.out.println("El numero "+numero+ " tiene "+numCifras+" cifras"); } } public static int cuentaCifras (int numero){ int contador=0; for (int i=numero;i>0;i/=10){ //Incrementamos el contador contador++; } return contador; } } |
7) Crea un aplicación que nos convierta una cantidad de euros introducida por teclado a otra moneda, estas pueden ser a dolares, yenes o libras. El método tendrá como parámetros, la cantidad de euros y la moneda a pasar que sera una cadena, este no devolverá ningún valor, mostrara un mensaje indicando el cambio (void).
El cambio de divisas son:
- 0.86 libras es un 1 €
- 1.28611 $ es un 1 €
- 129.852 yenes es un 1 €
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import javax.swing.JOptionPane; public class Conversor { public static void main(String[] args) { String texto=JOptionPane.showInputDialog("Escribe una cantidad en euros"); double cantidad=Double.parseDouble(texto); String moneda=JOptionPane.showInputDialog("Escribe la moneda a la que quieres convertir"); conversor(cantidad, moneda); } public static void conversor (double cantidad, String moneda){ double res=0; //Este booleano lo utilizo en caso de que alguien, no introduzca un nombre de moneda correcto boolean correcto = true; //Segun la moneda, calculamos la cantidad switch (moneda){ case "libras": res=cantidad*0.86; break; case "dolares": res=cantidad*1.29; break; case "yenes": res=cantidad*129.852; break; default: System.out.println("No has introducido una moneda correcta"); correcto=false; } //Solo si es correcto muestra el mensaje if (correcto){ System.out.println(cantidad+ " euros en " +moneda+ " son " +res); } } } |
También os dejamos los vídeos que hemos realizado en Youtube.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
hey bro quisiera saber si pudes ayudarme con un programa en eclipse que pida la fecha de nacimiento en formato numerico y devuelva cuantos dias tiene vividos porfa :c
hola. por favor me puede ayudar con este ejercicio. Una empresa que contrata personal requiere determinar la edad de las personas que solicitan trabajo pero cuando se le realiza la entrevista no se pregunta. Realice un programa en Java que permita solucionar este problema.
Escriba un programa que pida una letra minúscula, el programa deberá imprimir si la letra es una vocal (a,e,i,o,u), semivocal (y) o una consonante.
en el ejercicio 7 a la hora de compilar el switch me da un error ya que dice que necesita un int y no string en esto soy muy nueva y he intentado de corregirlo, no se si alguien me da una idea…
Declarar las siguientes variables de tipo entero (int) con los identificadores: _13a, 25yZ, nombr3,
my_var, goto, name_, return. ¿Cuáles de los identificadores anteriores no son válidos?, explicar el por
qué no son correctos.
necesito que me ayuden por fa!
He decidido hacer de forma más extensa lo del cambio de divisas. Me gustaría la opinión de alguien que sepa:
import javax.swing.*;
import java.text.DecimalFormat;
public class ConversionDeDivisas {
public static void main (String[] args){
DecimalFormat df = new DecimalFormat(«#.00»);
//Declaración de las arrays
String[] opciones = {«€», «¥», «$», «£»};
String[] opciones1 = {«¥», «$», «£»};
String[] opciones2 = {«€», «$», «£»};
String[] opciones3 = {«€», «¥», «£»};
String[] opciones4 = {«€», «¥», «$»};
//Menús de selección
//DIVISA QUE QUIERO TRANSFORMAR A OTRA
int opcion = JOptionPane.showOptionDialog(null,»¿Qué divisa tiene usted?»,»Programa de JCA», JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,null, opciones, null);
//ADVERTENCIA SOBRE LOS DECIMALES
JOptionPane.showMessageDialog(null,»Si desea utilizar números decimales, separelos con ‘.’ y no con ‘,'», «IMPORTANTE», JOptionPane.WARNING_MESSAGE, null);
//MENU DE ELECCION PARA PASAR EUROS A OTRA DIVISA
if (opcion==0) {
int opcion1 = JOptionPane.showOptionDialog(null, «¿A qué divisa quiere hacer el cambio?», «Cambio de € a», JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, opciones1, null);
if (opcion1==0){
JOptionPane.showMessageDialog(null, («€ equivalen a «+df.format(euro1())+»¥»));
}
if (opcion1==1){
JOptionPane.showMessageDialog(null, («€ equivalen a «+df.format(euro2())+»$»));
}
if (opcion1==2){
JOptionPane.showMessageDialog(null, («€ equivalen a «+df.format(euro3())+»£»));
}
}
//MENU DE ELECCION PARA PASAR YENES A OTRA DIVISA
if (opcion==1) {
int opcion2 = JOptionPane.showOptionDialog(null, «¿A qué divisa quiere hacer el cambio?», «Cambio de ¥ a», JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, opciones2, null);
if (opcion2==0){
JOptionPane.showMessageDialog(null, («¥ equivalen a «+df.format(yen1())+»€»));
}
if (opcion2==1){
JOptionPane.showMessageDialog(null, («¥ equivalen a «+df.format(yen2())+»$»));
}
if (opcion2==2){
JOptionPane.showMessageDialog(null, («¥ equivalen a «+df.format(yen3())+»£»));
}
}
//MENU DE ELECCION PARA PASAR DOLARES A OTRA DIVISA
if (opcion==2) {
int opcion3 = JOptionPane.showOptionDialog(null, «¿A qué divisa quiere hacer el cambio?», «Cambio de $ a», JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, opciones3, null);
if (opcion3==0){
JOptionPane.showMessageDialog(null, («$ equivalen a «+df.format(dolar1())+»€»));
}
if (opcion3==1){
JOptionPane.showMessageDialog(null, («$ equivalen a «+df.format(dolar2())+»¥»));
}
if (opcion3==2){
JOptionPane.showMessageDialog(null, («$ equivalen a «+df.format(dolar3())+»£»));
}
}
//MENU DE ELECCION PARA PASAR LIBRAS A OTRA DIVISA
if (opcion==3) {
int opcion4 = JOptionPane.showOptionDialog(null, «¿A qué divisa quiere hacer el cambio?», «Cambio de £ a», JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, opciones4, null);
if (opcion4==0){
JOptionPane.showMessageDialog(null, («£ equivalen a «+df.format(libra1())+»€»));
}
if (opcion4==1){
JOptionPane.showMessageDialog(null, («£ equivalen a «+df.format(libra2())+»¥»));
}
if (opcion4==2){
JOptionPane.showMessageDialog(null, («£ equivalen a «+df.format(libra3())+»$»));
}
}
System.exit(0);
}
//Funciones para el apartado euros
//Pasa de euros a yenes
private static double euro1(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo = Double.parseDouble(num1);
resultado = saldo * 129.852;
return resultado;
}
//Pasa de euros a dolares
private static double euro2(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo = Double.parseDouble(num1);
resultado = saldo * 1.28611;
return resultado;
}
//Pasa de euros a libras
private static double euro3(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo = Double.parseDouble(num1);
resultado = saldo * 0.86;
return resultado;
}
//Funciones para el apartado yenes
//Pasa de yenes a euros
private static double yen1(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo = Double.parseDouble(num1);
resultado = saldo / 129.852;
return resultado;
}
//Pasa de yenes a euros y lo pasa a dolares
private static double yen2(){
double resultado1;
double resultado2;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
double saldo2 = saldo1 / 129.852;
resultado2 = saldo2 * 1.28611;
return resultado2;
}
//Pasa de yenes a euros y lo pasa a libras
private static double yen3(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
double saldo2 = saldo1 / 129.852;
resultado = saldo2 * 0.86;
return resultado;
}
//Funciones para el apartado dolares
//Pasa de dolares a euros
private static double dolar1(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado = saldo1 / 1.28611;
return resultado;
}
//Pasa de dolares a euros y hace el cambio a yenes
private static double dolar2(){
double resultado1;
double resultado2;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado1 = saldo1 / 1.28611;
resultado2 = resultado1 * 129.852;
return resultado2;
}
//Pasa de dolares a euros y hace el cambio a libras
private static double dolar3(){
double resultado1;
double resultado2;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado1 = saldo1 / 1.28611;
resultado2 = resultado1 * 0.86;
return resultado2;
}
//Funciones para el apartado libras
//De libras a euros
private static double libra1(){
double resultado;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado = saldo1 / 0.86;
return resultado;
}
//Pasa de libras a euros y hace el cambio a yenes
private static double libra2(){
double resultado1;
double resultado2;
String num1=JOptionPane.showInputDialog(null,»Indique su saldo:»,»Cantidad»,JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado1 = saldo1 / 0.86;
resultado2 = resultado1 * 129.852;
return resultado2;
}
//Pasa de libras a euros y hace el cambio a dolares
private static double libra3() {
double resultado1;
double resultado2;
String num1 = JOptionPane.showInputDialog(null, «Indique su saldo:», «Cantidad», JOptionPane.INFORMATION_MESSAGE);
double saldo1 = Double.parseDouble(num1);
resultado1 = saldo1 / 0.86;
resultado2 = resultado1 * 1.28611;
return resultado2;
}
}