Os propongo algunos ejercicios con arrays en Java para practicar lo explicado en el post anterior en el que contaba como trabajar con los arrays. Como siempre digo, existen varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1

Escribe un programa java que pida al usuario que introduzca un texto y una letra. Después el programa tiene que calcular y presentar por pantalla, cuantas veces aparece la letra en el texto.

Pista: Un string es un array de caracteres. Para acceder a un elemento del string, usa la función chartAt(posición).

Por ejemplo. Si el string es “Hola Mundo”, con la sentencia text.charAt(3), recuperamos el carácter ‘a’. Recuerda que las posiciones empiezan en 0.

Una posible solución sería:

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 java.util.Scanner;

 

public class LetraEnTexto {

public static void main(String args[]) {

Scanner lector1=new Scanner(System.in);

Scanner lector2=new Scanner(System.in);

System.out.println(«introduce un texto:»);

String txt = lector1.nextLine();

System.out.println(«introduce una letra:»);

String ch = lector2.next();

 

int len = txt.length();

 

int cont=0;

for (int i=0;i<len;i++){

if (txt.charAt(i)==ch.charAt(0)){

cont++;

}

}

System.out.println(«La letra «+ch.charAt(0)+» aparece «+cont+» veces»);

 

lector1.close();

lector2.close();

}

}

En este caso, presento una segunda solución, trabajando con el tipo char:

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

import java.util.Scanner;

 

public class LetraEnTexto {

public static void main(String args[]) {

Scanner lector1=new Scanner(System.in);

Scanner lector2=new Scanner(System.in);

System.out.println(«introduce un texto:»);

String txt = lector1.nextLine();

System.out.println(«introduce una letra:»);

String ch = lector2.next();

 

int len = txt.length();

int cont=0;

char letra=ch.charAt(0);

char c;

for (int i=0;i<len;i++){

c=txt.charAt(i);

if (c==letra){

cont++;

}

}

System.out.println(«La letra «+ letra +» aparece «+cont+» veces»);

 

lector1.close();

lector2.close();

}

}

Ejercicio 2

Escribe un programa que pida al usuario que introduzca los datos de una factura y luego los presente por pantalla.

  • La factura tendrá tres partes. La cabecera, el listado de productos con sus datos, y el pie de factura con el total de la misma.
  • La cabecera tendrá la siguiente información: Producto, unidades, precio/unidad y total.
  • Le pediremos al usuario que introduzca los datos anteriores para tres productos. Por lo que el cuerpo de la factura tendrá 3 líneas.

Un ejemplo de posible factura impresa sería:

_______________________________________

Producto —Unidades —Precio/unidad —Total

_______________________________________

Mesa—7—101.0—707.0

Silla—3—45.0—135.0

Lampara—11—9.0—99.0

_______________________________________

Total: 941.0

Una posible solución sería:

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

import java.util.Scanner;

 

public class Factura {

public static void main(String args[]) {

Scanner sc1 = new Scanner(System.in);

Scanner sc2 = new Scanner(System.in);

Scanner sc3 = new Scanner(System.in);

String[] productos = new String[3];

int[] unidades= new int[3];

double[] precios= new double[3];

for (int i=1;i<4;i++){

System.out.println(«Introduce el producto «+i);

productos[i-1] = sc1.nextLine();

System.out.println(«Introduce las unidades de producto «+i);

unidades[i-1] = sc2.nextInt();

System.out.println(«Introduce el precio por unidad del producto «+i);

precios[i-1] = sc3.nextDouble();

}

System.out.println(» «);

System.out.println(«_______________________________________»);

System.out.println(«Producto —Unidades —Precio/unidad —Total»);

System.out.println(«_______________________________________»);

double total=0.0;

for (int i=1;i<4;i++){

System.out.print(productos[i-1]+»—«+unidades[i-1]+»—«+precios[i-1]+»—«+unidades[i-1]*precios[i-1]+»\n»);

total = total + (unidades[i-1]*precios[i-1]);

}

System.out.println(«_______________________________________»);

System.out.println(«Total: «+total);

sc1.close();sc2.close();sc3.close();

}

}

 

Ejercicio 3

Escribe un programa que busque un valor dentro de un array de integers y borre todas sus ocurrencias, reduciendo la dimensión del array. Es decir, no vale con poner cero en el lugar donde encontremos el valor.

El array de integers estará hardcodeado.

El valor a buscar y borrar debe ser introducido por el usuario.

El programa debe mostrar por pantalla el valor borrado, el array inicial y el array final.

Una posible salida sería:

Introduce el numero que quieres borrar:

5

Elemento a borrar: 5

Array inicial: 1 – 5 – 9 – 3 – 45 – 23 – 45 – 12 – 87 – 9 – 6 – 5 –

Array final  : 1 – 9 – 3 – 45 – 23 – 45 – 12 – 87 – 9 –

Una posible solución sería:

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 java.util.Scanner;

 

public class BuscaValor {

public static void main(String args[]) {

int[] numeros={1,5,9,3,45,23,45,12,87,9,6,5};

Scanner lector1 = new Scanner(System.in);

System.out.println(«Introduce el numero que quieres borrar: «);

int num = lector1.nextInt();

System.out.println(«Elemento a borrar: «+num);

System.out.print(«Array inicial: «);

printArray (numeros);

int ocurrencias = 0;

for (int i=0;i<numeros.length;i++){

if (numeros[i]==num){

ocurrencias++;

for (int j=i;j<numeros.length-1;j++){

numeros[j]=numeros[j+1];

}

}

}

int[] numerosFinal;

int le = numeros.length-ocurrencias;

numerosFinal = new int[le];

for (int i=0;i<le;i++){

numerosFinal[i]=numeros[i];

}

System.out.print(«Array final  : «);

printArray (numerosFinal);

lector1.close();

}

private static void printArray(int n[]){

for (int i=0;i<n.length;i++){

System.out.print(n[i]+» – «);

}

System.out.print(«\n»);

}

}

 

Ejercicio 4

Crea un programa que muestre por pantalla la nota de un estudiante, de entre una lista de estudiantes con sus respectivas notas. Estos datos estarían hardcodeados.

El nombre del estudiante lo introduce el usuario por teclado (usa la clase Scanner).

Usa dos arrays, uno para guardar los nombres de los estudiantes, y el otro para guardar las notas de los mismos. Ambos tendrán 5 elementos. Puedes guardar la información relacionada en ambos arrays con el mismo valor del índice. Es decir, si por ejemplo el estudiante Pedro está en la posición 2 del array de estudiantes, su nota estaría en la posición 2 del array de notas.

Para comparar el nombre del estudiante introducido por teclado con los nombres de los estudiantes en el array de estudiantes, puedes usar el método equals de la Clase String.

Una posible solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import java.util.Scanner;

public class PreguntaNota {

public static void main(String[] args) {

    String [] estudiantes = {«Pedro»,»Ana»,»Roberto»,»Lucia»,»Maria»};

    double [] notas = {7.0,2.3,4.5,6.7,5.7};

    Scanner sc=new Scanner(System.in);

    System.out.println(«Introduce el nombre de un estudiante: «);

    String estudiante=sc.nextLine();

    for (int i=0;i<5;i++){

        if(estudiantes[i].equals(estudiante)){

            System.out.println(«Estudiante «+estudiante+» tiene una nota de «+notas[i]);

            }

        }

    }

}

Ejercicio 5

Escribe un programa java que invierta el orden de los valores de un array. Por invertir el orden de los valores de un array, me refiero que el último pasa a ser el primero, el penúltimo el segundo y así sucesivamente.

El array será un array hardcodeado de valores enteros, que puede tener cualquier longitud.

El programa primero dibujara por pantalla los elementos del array en orden y luego los elementos del array invertido.

Una posible salida sería:

Array inicial:

7 – 3 – 4 – 5 – 9 – 11 –

Array invertido:

11 – 9 – 5 – 4 – 3 – 7 –

 

Una posible solución sería:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public class InvierteArray {

 

    public static void main(String[] args) {

        int[] numeros ={7,3,4,5,9,11};

        int longitud = numeros.length;

        //imprimimos el array de partida

        System.out.println(«Array inicial: «);

        for (int i=0; i<longitud;i++){

            System.out.print (numeros[i]+» – «);

        }

        System.out.println(«\n»);

        //Array invertido: imprimiento el array de atras a adelante

        System.out.println(«Array invertido: «);

        for (int i=longitud-1; i>=0;i–){

            System.out.print (numeros[i]+» – «);

        }

        System.out.println(«\n»);

    }

}

 

Ejercicio 6

Desarrolla un programa java para ser usado por los camareros de un restaurante, que sirva para tomar nota de los menus que los clientes van a tomar.

  • Primer dato a introducir por el camarero es el número de comensales que tendrá que estar en el rango de 1-5, ya que no hay mesas de más de cinco comensales. El valor introducido debe asegurarse de que se encuentra en el rango definido.
  • Entonces el camarero tiene que introducir el menú seleccionado por cada cliente.
  • Tenemos tres menus: #1,#2 y #3. Puedes identificar cada menú por el número: menú 1, menú 2 o menú 3.
  • Una vez introducidos todos los datos, el programa imprimirá por pantalla los menús solicitados por cada comensal.
  • Tienes que emplear un array para registrar los menus que tomará cada comensal. Ten en cuenta que la dimensión de dicho array tendrá que definirse en ejecución, ya que no sabemos a priori cuantos comensales vamos a tener.

 

  • Un ejemplo de una posible salida sería:

Introduce el número de comensales (máximo 5):

3

Introduce el menu pedido por el comensal 1 :

1

Introduce el menu pedido por el comensal 2 :

2

Introduce el menu pedido por el comensal 3 :

1

Comensal 1 va a tomar el menu 1

Comensal 2 va a tomar el menu 2

Comensal 3 va a tomar el menu 1

 

Una posible solución sería:

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

import java.util.Scanner;

 

public class Menus {

 

public static void main(String[] args) {

int numeroComensales;

int[] menus;

Scanner sc1 = new Scanner(System.in);

 

//introducción del número de comensales

do{

System.out.println(«Introduce el número de comensales (máximo 5):»);

numeroComensales = sc1.nextInt();

}while(numeroComensales<1 || numeroComensales>5);

 

//introducción de los menus para cada comensal

menus = new int[numeroComensales];

for(int i=0;i<numeroComensales;i++){

System.out.println(«Introduce el menu pedido por el comensal «+(i+1)+» :»);

menus[i]=sc1.nextInt();

}

 

//dibujando en pantalla los menus tomados por cada comensal

for (int i= 0; i<numeroComensales;i++){

System.out.println(«Comensal «+(i+1)+» va a tomar el menu «+menus[i]);

}

}

}

NOTA:

Este post es parte de la colección “Java” que reproduce los apuntes de la clase que imparto sobre el tema en ESIC. Puedes ver el índice de esta colección aquí.