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:
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
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.
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.
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.
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
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.
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).
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.
diego
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.
ana
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…
Daniela
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!
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!