Ejercicios propuestos y resueltos arrays de Java

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 arrays de Java.

Todos los ejercicios que proponemos están 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.

Te dejo nuestro curso java para las dudas:

Curso 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 un array de 10 posiciones de números con valores pedidos por teclado. Muestra por consola el indice y el valor al que corresponde. Haz dos métodos, uno para rellenar valores y otro para mostrar.

Spoiler Inside SelectShow>

2) Crea un array de números donde le indicamos por teclado el tamaño del array, rellenaremos el array con números aleatorios entre 0 y 9, al final muestra por pantalla el valor de cada posición y la suma de todos los valores. Haz un método para rellenar el array (que tenga como parámetros los números entre los que tenga que generar), para mostrar el contenido y la suma del array y un método privado para generar número aleatorio (lo puedes usar para otros ejercicios).

Spoiler Inside SelectShow>

3) Crea un array de números de un tamaño pasado por teclado, el array contendrá números aleatorios primos entre los números deseados, por último nos indica cual es el mayor de todos.

Haz un método para comprobar que el número aleatorio es primo, puedes hacer todos lo métodos que necesites.

Spoiler Inside SelectShow>

4) Crea un array de números de 100 posiciones, que contendrá los números del 1 al 100. Obtén la suma de todos ellos y la media.

Spoiler Inside SelectShow>




5) Crea un array de caracteres que contenga de la ‘A’ a la ‘Z’ (solo las mayúsculas). Después, ve pidiendo posiciones del array por teclado y si la posicion es correcta, se añadira a una cadena que se mostrara al final, se dejará de insertar cuando se introduzca un -1.

Por ejemplo, si escribo los siguientes numeros
0 //Añadira la ‘A’
5 //Añadira la ‘F’
25 //Añadira la ‘Z’
50 //Error, inserte otro numero
-1 //fin

Cadena resultante: AFZ

Spoiler Inside SelectShow>




6) Pide al usuario por teclado una frase y pasa sus caracteres a un array de caracteres. Puedes hacer con o sin métodos de String.

Spoiler Inside SelectShow>

7) Crea dos arrays de números con una posición pasado por teclado.

Uno de ellos estará rellenado con números aleatorios y el otro apuntara al array anterior, después crea un nuevo array con el primer array (usa de nuevo new con el primer array) con el mismo tamaño que se ha pasado por teclado, rellenalo de nuevo con números aleatorios.

Después, crea un método que tenga como parámetros, los dos arrays y devuelva uno nuevo con la multiplicación de la posición 0 del array1 con el del array2 y así sucesivamente. Por último, muestra el contenido de cada array.

Llama al final al recolector de basura.

Spoiler Inside SelectShow>




8) Crea un array de números de un tamaño pasado por teclado, el array contendrá números aleatorios entre 1 y 300 y mostrar aquellos números que acaben en un dígito que nosotros le indiquemos por teclado (debes controlar que se introduce un numero correcto), estos deben guardarse en un nuevo array.

Por ejemplo, en un array de 10 posiciones e indicamos mostrar los números acabados en 5, podría salir 155, 25, etc.

Spoiler Inside SelectShow>

9) Calcula la letra de un DNI, pediremos el DNI por teclado y nos devolverá el DNI completo.

Para calcular la letra, cogeremos el resto de dividir nuestro dni entre 23el resultado debe estar entre 0 y 22. Haz un método donde según el resultado de la anterior formula busque en un array de caracteres la posición que corresponda a la letra. Esta es la tabla de caracteres:

PosicionLetra
0T
1R
2W
3A
4G
5M
6Y
7F
8P
9D
10X
11B
12N
13J
14Z
15S
16Q
17V
18H
19L
20C
21K
22E
Por ejemplo, si introduzco 70588387, el resultado sera de 7 que corresponde a ‘F’.

Spoiler Inside SelectShow>

10) Crea un array de números y otro de String de 10 posiciones donde insertaremos notas entre 0 y 10 (debemos controlar que inserte una nota valida), pudiendo ser decimal la nota en el array de números, en el de Strings se insertaran los nombres de los alumnos.

Después, crearemos un array de String donde insertaremos el resultado de la nota con palabras.

  • Si la nota esta entre 0 y 4,99 , sera un suspenso
  • Si esta entre 5 y 6,99 , sera un bien.
  • Si esta entre 7 y 8,99 sera un notable.
  • Si esta entre 9 y 10 sera un sobresaliente.

Muestra por pantalla, el alumno su nota y su resultado en palabras. Crea los métodos que creas conveniente.

Spoiler Inside SelectShow>
11) Crea una aplicación que pida un numero por teclado y después comprobaremos si el numero introducido es capicua, es decir, que se lee igual sin importar la dirección. Por ejemplo, si introducimos 30303 es capicua, si introducimos 30430 no es capicua. Piensa como puedes dar la vuelta al número. Una forma de pasar un número a un array es esta Character.getNumericValue(cadena.charAt(posicion)).
Spoiler Inside SelectShow>

12) Dado un array de números de 5 posiciones con los siguiente valores {1,2,3,4,5}, guardar los valores de este array en otro array distinto pero con los valores invertidos, es decir, que el segundo array debera tener los valores {5,4,3,2,1}.

Spoiler Inside SelectShow>

13) Rellenar un array de numeros (int) usando el metodo fill de Arrays.

Spoiler Inside SelectShow>

14) Crear dos arrays, rellenar uno con números y copiarlo al otro usando CopyOf de Arrays.

Spoiler Inside SelectShow>

15) Indica si dos arrays creados por ti son iguales con Equals de Arrays.

Spoiler Inside SelectShow>

16) Ordena un array de números con Sort de Arrays.

Spoiler Inside SelectShow>

17) Ordenar un array de números con el método de la burbuja.

Spoiler Inside SelectShow>

18) Ordenar un array de números con el método QuickSort.

Spoiler Inside SelectShow>

19) Ordenar un array de cadenas con el método Quicksort.

Spoiler Inside SelectShow>

20) Ordenar un array de números con el método que quieras y hacer una búsqueda binaria de cualquier numero.

Spoiler Inside SelectShow>

21) Vamos a crear el juego del ahorcado por consola.

Al inicio del programa, pedirá los nombres de los dos jugadores. El primer turno será para el jugador 1.

Uno escribe una palabra y el otro la adivina, si este la adivina obtendrá un punto y escribirá una palabra, sino lo acierta el jugador actual suma un punto y escribe de nuevo otra palabra.

Cuando el jugador inserte su palabra también deberá añadir una pequeña pista, por ejemplo si la palabra es Madrid, la pista puede ser «Ciudad».

El jugador que tenga que acertar la palabra tendrá seis oportunidades (cabeza, cuerpo, brazos y piernas). No es necesario dibujar nada por pantalla, solo mostrar el número de oportunidades restantes.

Deberá mostrase los caracteres que el usuario inserta para esa palabra, para evitar que las repita, en caso de que lo haga, avisarle y no contar como error.

Cada vez que acierte o no la palabra, deberá mostrar la puntuación de ambos. El primero que llegue a 3 puntos gana.

Puedes usar todos los medios a tu alcance.

Spoiler Inside SelectShow>

22) Generar un arreglo con numero aleatorios no repetidos entre sí.

Spoiler Inside SelectShow>

23) Teniendo un vector con los valores que queramos, meter en otro de la misma longitud,
aquellos que sean pares y mayores que 25.

Después, mostrar el vector de origen y el de destino, solo los numero introducidos.

Spoiler Inside SelectShow>

24) Se quiere simular un juego en el que participan N jugadores y otra persona que hace de árbitro. Cada jugador elige 4 números en el rango [1, 10], pudiendo estar repetidos. A continuación, el árbitro, sin conocer los números que ha elegido cada jugador, selecciona 2 números A y B.

El programa debe ser capaz de calcular cuántos números de los seleccionados por cada jugador están comprendidos entre los valores A y B. Ganará el jugador que más números tenga en dicho intervalo.

Se pide implementar un programa modular que simule el juego para 3 jugadores, teniendo en cuenta que:

  • Tanto los 4 datos de cada jugador, como los valores para A y B se introducirán por teclado. En todos los casos, el programa detectará la entrada de números erróneos, solicitando nuevamente el dato hasta que sea válido.
  • Se deben mostrar por pantalla no solo los aciertos de cada jugador sino los datos que ha introducido cada jugador y los que ha seleccionado el árbitro. Por último, hay que imprimir la media aritmética de los aciertos de todos los jugadores
Spoiler Inside SelectShow>

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

10 comentarios

  1. Alejandra Sanders

    Me resulta difícil, no soy muy buena para esto, pero son tan necesarios, saludos
    Traffic club, Cuentos de terror y profecias

  2. Chato

    Utilice un arreglo de objetos para hacer el 10, crei que asi lo hicieron aqui pero veo que no.

  3. Disco Duro de Roer Post author

    En este caso, no es necesario ya que todos los valores son int, si hubiera algun valor como un boolean o un String y te obliga a tenerlo todo junto, no te quedaria otra que hacer lo que dices, pero ten en cuenta que debes despues parsear los valores y Object gasta mucha mas memoria que si es un tipo de dato concreto.

    Un saludo

  4. iker

    Ayudaa!

    necesito realizar el siguiente programa en java con arreglos:

    Una tortillería requiere controlar los paquetes que surten a los repartidores de la localidad(tortilleros) que son mas de 5

    La idea es saber cuantos paquetes se les entregan y cuantos vende para saber que eficiencia tienen por dia si trabajan toda la semana

  5. Alfonso

    La formula para calcular DNI en el ejercicio 6 es errónea, la correcta es: DNI%23. Simplemente consiste en quedarte con el resto de la division DNI/23.
    Tal cual está redactada, siempre te da 0, puesto que por ejemplo: 11111111-(11111111/23*23)=0 [debido a que multiplicas y divides por 23].

  6. Alfonso

    OTRA MANERA DE RESOLVER EL 6
    public static void main (String args[]) {

    Scanner teclado=new Scanner(System.in);
    int dni, resul;

    char [] letra ={‘T’,’R’,’W’,’A’,’G’,’M’,’Y’,’F’,’P’,’D’,’X’,’B’,’N’,’J’,’Z’,’S’,’Q’,’V’,’H’,’L’,’C’,’K’,’E’};

    System.out.print(«Introduce DNI: «);
    dni=teclado.nextInt();

    resul=dni%23;

    for(int i=0;i<letra.length;i++){
    if(resul==i){
    System.out.println(dni+"-"+letra[i]);
    }
    }
    }

  7. Disco Duro de Roer Post author

    Hola, estoy probando y si funciona, ya que java trunca el resultado si sale parte decimal, por lo que no se anula como tal. Si lo pruebas con 11111111 también funciona.

    Si el dni es 70588387, divides entre 23 = 3069060,304 pero en Java la parte decimal la quita y por eso al multiplicar no queda el mismo dni. 3069060 * 23 = 70588380 70588387 – 70588380 = 7 (letra F)

    De todas formas, si es cierto que es mas cómodo coger el módulo directamente, eso lo edito. Gracias por tu comentario.

  8. Disco Duro de Roer Post author

    Se puede hacer también así, pero si ya tienes la posición de la letra que lo almacenas en la variable resul, no es necesario realizar un bucle, ya que con System.out.println(dni+»-«+letra[resul]); ya tendrias lo que tu buscas, son cosas pequeñas, pero a la larga en un programa que sea grande hay que buscar la mayor eficiencia posible. Gracias por tu comentario.

  9. Alfonso

    Es cierto, no había pensado en ello. Soy bastante nuevo en esto de java, y de la programacion en general. Siempre es de agradecer aprender maneras distintas de hacer las cosas ya que en el futuro es muy posible que, de manera involuntaria, recurra a ellas aun de forma inconsciente :P
    PD: no es la primera vez que me ha pasado esto de la ineficiencia , de Madrid a Paris suelo pasar por Roma casi siempre jaja

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *