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.
Uff!! esto ya es para muy entendidos.
Saludos,
Traffic-club
RjL-Cine de Balcón
RjLebrancón
marcos
en el ejercicio 3 linea 18 me da errores eclipse » > y el 1 de despues»
Disco Duro de Roer Post author
cambia > ; por >
Es un problema mio, por wordpress, hay veces que si yo no lo cambio, no lo reconoce bien.
Un saludo y perdona las molestias.
marcos
Ninguna molestia, muchas gracias por tu gran trabajo me esta siendo muy util para empezar a practicar, ya no me da errores pero tampoco me funciona, me da todos los números como «no primos» un saludo y gracias de nuevo
Disco Duro de Roer Post author
Ya esta arreglado, era cosa del ultimo operador que lo tenia cambiado, ya esta todo en orden, de nuevo mis disculpas, tendré mas cuidado la próxima vez.
Un saludo y gracias de nuevo.
marcos
Hola buenas de nuevo, te queria hacer una consulta del ejercicio 6, el problema es que no me genera la contraseña de la longitud dada, alguna idea de donde puede estar el problema?muchas gracias
Disco Duro de Roer Post author
En realidad si lo hace bien, lo que pasa es que al generar un numero, lo genero mal, y puede salir un numero de 2 cifras. En el metodo generaNum cambia esta linea int num=(int)Math.floor(Math.random()*(58-48)+48); por esto int num=(int)Math.floor(Math.random()*9);.
Un saludo y gracias de nuevo.
Necesito ayuda con un programa…en java
tres campos de captura: cifra, longitud y sentido, boton ok
cifra: __________ 876 longitud original
longitud: ________ 7 largo
caracter: _______0 caracter de relleno
sentido:__________ (d,i) i derecha o izquierda
lo que el programa debe hacer es… ingresas una cifra 876 pero como es de 10 digitos los bede poner a la izq o a la derecha segun lo elija…por ejempo
pongo 876 y selecciono izquierda el resultado debe ser: 0000000876 o derecha 8760000000..
ayuda!!!
Disco Duro de Roer Post author
Supongo que es una interfaz gráfica lo que estas utilizando. Lo que pides se puede hacer con un pequeño metodo, donde le pases por parametro, la cifra, longitud, caracter de relleno y el sentido, seria hacer un bucle añadiendo ese caracter a la izquierda o derecha segun te pida, puede ser algo asi (lo he hecho muy rapido, se puede mejorar, pero hace lo que pide).
public String convertidor(String texto, int longitud, char caracterRelleno, char direccion){
String aux=»»;
for(int i=0;i
Jaime
Fenomenal!! explicaciones sencillas y ejemplos q ayudan a comprender lo visto. Ahora a por los arrays!!!! gracias por la aportación ;)
Uff!! esto ya es para muy entendidos.
Saludos,
Traffic-club
RjL-Cine de Balcón
RjLebrancón
en el ejercicio 3 linea 18 me da errores eclipse » > y el 1 de despues»
cambia > ; por >
Es un problema mio, por wordpress, hay veces que si yo no lo cambio, no lo reconoce bien.
Un saludo y perdona las molestias.
Ninguna molestia, muchas gracias por tu gran trabajo me esta siendo muy util para empezar a practicar, ya no me da errores pero tampoco me funciona, me da todos los números como «no primos» un saludo y gracias de nuevo
Ya esta arreglado, era cosa del ultimo operador que lo tenia cambiado, ya esta todo en orden, de nuevo mis disculpas, tendré mas cuidado la próxima vez.
Un saludo y gracias de nuevo.
Hola buenas de nuevo, te queria hacer una consulta del ejercicio 6, el problema es que no me genera la contraseña de la longitud dada, alguna idea de donde puede estar el problema?muchas gracias
En realidad si lo hace bien, lo que pasa es que al generar un numero, lo genero mal, y puede salir un numero de 2 cifras. En el metodo generaNum cambia esta linea int num=(int)Math.floor(Math.random()*(58-48)+48); por esto int num=(int)Math.floor(Math.random()*9);.
Un saludo y gracias de nuevo.
Necesito ayuda con un programa…en java
tres campos de captura: cifra, longitud y sentido, boton ok
cifra: __________ 876 longitud original
longitud: ________ 7 largo
caracter: _______0 caracter de relleno
sentido:__________ (d,i) i derecha o izquierda
lo que el programa debe hacer es… ingresas una cifra 876 pero como es de 10 digitos los bede poner a la izq o a la derecha segun lo elija…por ejempo
pongo 876 y selecciono izquierda el resultado debe ser: 0000000876 o derecha 8760000000..
ayuda!!!
Supongo que es una interfaz gráfica lo que estas utilizando. Lo que pides se puede hacer con un pequeño metodo, donde le pases por parametro, la cifra, longitud, caracter de relleno y el sentido, seria hacer un bucle añadiendo ese caracter a la izquierda o derecha segun te pida, puede ser algo asi (lo he hecho muy rapido, se puede mejorar, pero hace lo que pide).
public String convertidor(String texto, int longitud, char caracterRelleno, char direccion){
String aux=»»;
for(int i=0;i
Fenomenal!! explicaciones sencillas y ejemplos q ayudan a comprender lo visto. Ahora a por los arrays!!!! gracias por la aportación ;)