You are on page 1of 43

a)

Programa 1.

Declara un array tipo int (entero) denominado numerodecoches que contenga 24


variables. Declara una variable tipo int (entero) que se llame r. Establece el valor de r en 2 y
el valor de numerodecoches para un localizador de valor r en 23. Procede a mostrar en
pantalla un mensaje que indique cul es la hora r y el nmero de coches para la hora r.
Finalmente, modifica nicamente la asignacin de valor a r de modo que en vez de 2 sea 21
y ejecuta de nuevo el programa.

b)

Programa 2.

Sobre el programa anterior mantn el nmero de elementos de numerodecoches en 24.


Declara dos variables a y b de tipo int(entero). Establece a con valor 8, b con valor 4 y r con
valor a dividido entre b. Ejecuta el programa.

SOLUCIN

El programa 1 ser el siguiente. Si lo ejecutamos obtendremos "El nmero de coches en la


hora 2 fue 23". Si cambiamos r = 2 por r = 21 obtendremos "El nmero de coches en la hora
21 fue 23".
Un array en Java es una estructura de datos que nos permite almacenar un conjunto de datos
de un mismo tipo. El tamao de los arrays se declara en un primer momento y no puede
cambiar luego durante la ejecucin del programa, como s puede hacerse en otros lenguajes.
Veremos ahora cmo declarar arrays estticos de una dimensin.

/* Ejercicio Programa 1 aprenderaprogramar.com */

public class Programa1 {


public static void main(String arg[ ]) {

int[ ] numerodecoches = new int[24];


int r;
r = 2;

numerodecoches[r] = 23;
System.out.print("El nmero de coches en la hora "+r+" fue "+ numerodecoches[r]);
}
}

Nota:

Recordar

numerodecoches

que
=

cuando
new

declaramos

int[24];,

los

un

array

elementos

de
del

24
array

elementos
que

se

comoint[
crean

son

numerodecoches[0], numerodecoches[1] hasta numerodecoches[23]. Tenemos por tanto


24 elementos (del 0 al 23) pero no existe la variable numerodecoches[24] como puede
ocurrir en otros lenguajes.
Nota: El smbolo + significa concatenacin y se usa para concatenar en este caso valores
cadena con variables que tienen un valor numrico. De este modo obtenemos una sola
cadena que se imprime en la pantalla DOS. Tambin recordar que numerodecoches[r] = 23
significa que estamos asignando el nmero 23 a la posicin indicada por el valor que tenga r
en su momento, siendo el valor mximo que podra tener r el valor 23 y el valor mnimo 0. El
uso de otros valores de r dara lugar a un error.
El programa 2 ser el siguiente. Ten en cuenta que el array numerodecoches tiene 24
elementos siendo el primero el de localizador cero. El resultado va a ser igual que el del
anterior programa, ya que r = 2 dado que 8/4 = 2. Por lo tanto se mostrar en pantalla "El
nmero de coches en la hora 2 fue 23".

/* Ejercicio Programa 2 aprenderaprogramar.com */


public class Programa2 {
public static void main(String arg[ ]) {

int[ ] numerodecoches = new int[24];


int a, b;
int r;
a = 8;

b = 4;
r = a / b;
numerodecoches[r] = 23;
System.out.print("El nmero de coches en la hora "+r+" fue "+ numerodecoches[r]);
}
}

1. Hacer un programa para ingresar n valores reales en un arreglo y los muestre en


la pantalla, adems reportar el mayor, el menor y el promedio.
1 import java.util.Scanner;
2
class Arreglo01{
3 public
public static void main(String arg[])
4
{
5
Scanner in = new Scanner(System.in);
double x[],mayor,menor,promedio,suma=0;
6
int n,i;
7
8
do{
9
System.out.print("Cantidad de elementos del arreglo : ");
10
11
n=in.nextInt();
12
}while(n<=0 || n>100);
13
x=new double[n];
14
15
for(i=0; i<n;i++)
16
{
17
System.out.print("x["+i+"]: ");
18
x[i]=in.nextDouble();
}
19
20
System.out.println("Elementos del arreglo");
21
for(i=0; i<n;i++)
22
System.out.println("x["+i+"]: "+x[i]);
23
24
// Calculo del mayor y menor
25
26
mayor=menor=x[0];
for(i=1; i<n; i++)
27
if (x[i]>mayor) mayor=x[i];
28
else
29
if(x[i]<menor) menor=x[i];
30
31
// Calculo de la suma de los elementos
32
for(i=0; i<n; i++)
suma=suma+x[i];
33
34
promedio=suma/n;
35
System.out.println("El mayor es " +mayor);
36
System.out.println("El menor es:"+ menor);
37

38
39
40
41
42 }
43
44
45

System.out.println("El promedio es : "+ promedio);

2. Programa para ingresar n valores reales en un arreglo y calcular la desviacin


standard.
1
2
3
import java.util.Scanner;
4
5 public class Arreglo02{
6
public static void main(String arg[])
{
7
Scanner in = new Scanner(System.in);
8
double x[],suma=0,p,ds;
9
10
int n,i;
11
12
do{
13
System.out.print("Cantidad de elementos del arreglo : ");
n=in.nextInt();
14
}while(n<=0);
15
16
x=new double[n];
17
18
for(i=0; i<n;i++)
19
{
System.out.print("x["+i+"]: ");
20
x[i]=in.nextDouble();
21
}
22
23
System.out.println("Elementos del arreglo");
24
for(i=0; i<n;i++)
25
System.out.println("x["+i+"]: "+x[i]);
26
for(i=0; i<n; i++)
27
suma=suma+x[i];
28
p=suma/n;
29
30
suma=0;
31
for(i=0;i<n;i++)
32
suma=suma + Math.pow(x[i]-p,2);
ds=Math.sqrt(suma/(n-1));
33
System.out.println("La desviacion standard es : "+ds);
34
}
35 }
36
37
38

3. Programa para ingresar n valores reales en un arreglo y luego invierta el arreglo.


1
2
3
import java.util.Scanner;
4
5 public class Arreglo03{
6
public static void main(String arg[])
7
{
8
double x[],temp;
9
10
int n,i,j;
11
Scanner in = new Scanner(System.in);
12
do{
13
System.out.print("Cantidad de elementos del arreglo : ");
n=in.nextInt();
14
}while(n<=0 || n>100);
15
16
x=new double[n];
17
18
for(i=0; i<n;i++)
19
{
20
System.out.print("x["+i+"]: ");
x[i]=in.nextDouble();
21
}
22
23
System.out.println("Arreglo Ingresado");
24
for(i=0; i<n;i++)
25
System.out.println("x["+i+"]: "+x[i]);
26
for(i=0,j=n-1;i<n/2;i++,j--)
27
{
28
temp=x[i];
29
x[i]=x[j];
30
x[j]=temp;
31
}
System.out.println("Arreglo Invertido");
32
for(i=0; i<n;i++)
33
System.out.println("x["+i+"]: "+x[i]);
34
35
}
36 }
37
38
39
4. Programa para ingresar 2 arreglos de n elementos reales cada uno y reportar el
producto escalar de ellos.
1 import java.util.Scanner;
2
class Arreglo04{
3 public
public static void main(String arg[])
4
{
5
Scanner in = new Scanner(System.in);

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 }
43
44
45

double x[],y[],pe;
int n,i;
do{
System.out.print("Numero de elementos de los vectores : ");
n=in.nextInt();
}while(n<=0);
x=new double[n];
y=new double[n];
System.out.println("Ingreso de datos del primer vector");
for(i=0; i<n;i++)
{
System.out.print("x["+i+"]: ");
x[i]=in.nextDouble();
}
System.out.println("Ingreso de datos del segundo vector");
for(i=0; i<n;i++)
{
System.out.print("y["+i+"]: ");
y[i]=in.nextDouble();
}
System.out.println("Elementos del primer vector");
for(i=0; i<n;i++)
System.out.println("x["+i+"]: "+x[i]);
System.out.println("Elementos del Segundo vector");
for(i=0; i<n;i++)
System.out.println("y["+i+"]: "+y[i]);

pe=0;
for(i=0;i<n;i++)
pe=pe+x[i]*y[i];
System.out.println("El Producto escalar es : " +pe);

5. Programa para ingresar n elementos en un arreglo y luego reportarlo en la


pantalla. Adems ingresar un numero y verificar si este se encuentra en el
arreglo, si se encuentra reportar la posicin donde se encontr y si no se
encontr reportar numero no se encuentra.
6. Programa para ingresar n elementos en un arreglo y luego reportarlo en la
pantalla. Adems ingresar un nmero y verificar si este se encuentra en el
arreglo, si se encuentra cambiarlo por otro dato si no se encuentra reportar dato
no se encuentra.

7. Programa para ingresar n elementos en un arreglo y luego reportarlo en la


pantalla. Adems ingresar un numero y verificar si este se encuentra en el
arreglo, si se encuentra eliminarlo si no se encuentra reportar dato no se
encuentra.
1 import java.util.Scanner;
2
class Arreglo07{
3 public
public static void main(String arg[])
4
{
5
Scanner in = new Scanner(System.in);
double x[],num;
6
int n,i,p;
7
do{
8
System.out.print("Cantidad de elementos del arreglo : ");
9
n=in.nextInt();
10
}while(n<=0);
11
x=new double[n];
12
13
for(i=0; i<n;i++)
14
{
15
System.out.print("x["+i+"]: ");
16
x[i]=in.nextDouble();
}
17
18
System.out.println("Datos ingresados ");
19
for(i=0; i<n;i++)
20
System.out.println("x["+i+"]: "+x[i]);
21
22
System.out.println("Numero a buscar : ");
23
num=in.nextDouble();
24
p=-1;
25
for(i=0;i<n ;i++)
26
if(x[i]==num)
27
{
28
p=i;
29
break;
}
30
31
if(p!=-1)
32
{
33
for(i=p;i<n-1;i++)
34
x[i]=x[i+1];
n=n-1;
35
System.out.println("Nuevo arreglo ");
36
for(i=0; i<n;i++)
37
System.out.println("x["+i+"]: "+x[i]);
38
}
39
else
System.out.println("El numero no se encuentra en el
40
arreglo");
41
}
42 }
43
44
45

46
47
48
49
8. Programa para ingresar n elementos en un arreglo y luego reportarlo en la
pantalla. Adems ingresar un nmero y la posicin donde desea insertarlo e
insertarlo en el arreglo, reportar el arreglo modificado.
9. Programa para ingresar n elementos en un arreglo y luego reportarlo en la
pantalla. Adems reportarlo ordenado ascendentemente.

10. 1) Crea un array de 10 posiciones de nmeros con valores pedidos por teclado. Muestra por
consola el indice y el valor al que corresponde. Haz dos mtodos, uno para rellenar valores
y otro para mostrar.

1 import javax.swing.JOptionPane;
2 public class arrayApp {
3
4

public static void main(String[] args) {

5
6

//Esto es opcional

final int TAMANIO=10;

8
9

int num[]=new int[TAMANIO];

1
0

//Invocamos las funciones

11

rellenarArray(num);

1
2
1
3
1
4

mostrarArray(num);
}
public static void rellenarArray(int lista[]){
for(int i=0;i<lista.length;i++){

String texto=JOptionPane.showInputDialog("Introduce un

5
1

nmero");
lista[i]=Integer.parseInt(texto);

1
7
1

8
1
9
2
0
2
1
2
2

public static void mostrarArray(int lista[]){


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

System.out.println("En el indice "+i+" esta el valor

3
2 "+lista[i]);
4
2

}
}

5}
2
6
2
7
2
8
2
9
11. 2) Crea un array de nmeros donde le indicamos por teclado el tamao del array,
rellenaremos el array con nmeros aleatorios entre 0 y 9, al final muestra por pantalla el
valor de cada posicin y la suma de todos los valores. Haz un mtodo para rellenar el array
(que tenga como parmetros los nmeros entre los que tenga que generar), para mostrar el
contenido y la suma del array y un mtodo privado para generar nmero aleatorio (lo
puedes usar para otros ejercicios).

1 import javax.swing.JOptionPane;
2 public class arrayNumAleatoriosApp {
3
4

public static void main(String[] args) {

5
6

//Indicamos el tamao

String texto=JOptionPane.showInputDialog("Introduce un

8 tamao");
9

int num[]=new int[Integer.parseInt(texto)];

1
0

//Invocamos las funciones

11
1
2
1
3
1
4

rellenarNumAleatorioArray(num, 0, 9);

1
5
1
6

mostrarArray(num);
}

1
7

public static void rellenarNumAleatorioArray(int lista[], int a,

1 int b){
8

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

//Generamos un nmero entre los parametros pasados

lista[i]=((int)Math.floor(Math.random()*(a-b)+b));

2
0
2
1
2

}
}
public static void mostrarArray(int lista[]){
for(int i=0;i<lista.length;i++){

System.out.println("En el indice "+i+" esta el valor

2
3 "+lista[i]);

2
4

2}
5
2
6
2
7
2
8
12. 3) Crea un array de nmeros de un tamao pasado por teclado, el array contendr nmeros
aleatorios primos entre los nmeros deseados, por ltimo nos indicar cual es el mayor de
todos.
Haz un mtodo para comprobar que el nmero aleatorio es primo, puedes hacer todos lo
mtodos que necesites.

1 import javax.swing.JOptionPane;
2
3 public class PrimoArrayApp {
4
5

public static void main(String[] args) {

6
7

//Indicamos el tamao

String texto=JOptionPane.showInputDialog("Introduce un

9 tamao");
1

int num[]=new int[Integer.parseInt(texto)];

0
11

//Invocamos las funciones

rellenarNumPrimosAleatorioArray(num, 1, 3);

2
1
3
1
4
1
5

mostrarArray(num);
}
public static void rellenarNumPrimosAleatorioArray(int lista[], int
a, int b){

int i=0;

6
1

//Usamos mejor un while, ya que solo aumentara cuando genere

7
1 un primo

while(i<lista.length){

8
1

int num=((int)Math.floor(Math.random()*(a-b)+b));

if (esPrimo(num)){

lista[i]=num;

i++;

1
2
2
2

}
}
private static boolean esPrimo (int num){

3
2
4
2
5
2

//Un numero negativo, el 0 y el 1, son directamente no


primos.
if (num<=1){
return false;
}else{

//declaracion

int prueba;

int contador=0;

//Hacemos la raiz cuadrada y lo usamos para dividir el

8 numero original
2
prueba=(int)Math.sqrt(num);
9
3
0

//Bucle que cuenta los numeros divisibles, podemos


hacerlo con while
for (;prueba>1;prueba--){

if (num%prueba==0){

contador+=1;

return contador < 1;

3
4

3
5

public static void mostrarArray(int lista[]){


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

3
6

System.out.println("En el indice "+i+" esta el valor

3 "+lista[i]);
7
3
8}
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4

}
}

7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
13. 4) Crea dos arrays de nmeros con una posicin pasado por teclado.
Uno de ellos estar rellenado con nmeros aleatorios y el otro apuntara al array anterior,
despus crea un nuevo array con el primer array (usa de nuevo new con el primer array)
con el mismo tamao que se ha pasado por teclado, rellenalo de nuevo con nmeros
aleatorios.
Despus, crea un mtodo que tenga como parmetros, los dos arrays y devuelva uno
nuevo con la multiplicacin de la posicin 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.

1 import javax.swing.JOptionPane;
2 public class MultiplicacionApp {
3
4

public static void main(String[] args) {

5
6

//Indicamos el tamao

String texto=JOptionPane.showInputDialog("Introduce un

8 tamao");
9

int tamanio=Integer.parseInt(texto);

1
0

//Creamos los arrays

11

int array1[]=new int [tamanio];

int array2[];

2
1

//Rellenamos el array1

rellenarNumAleatorioArray(array1, 10, 100);

1
4

//Apuntamos el array2 al array1

array2=array1;

5
1
6
1

//Creamos un nuevo array, usando el array1. Array1 tendra una


nueva direccion.
array1=new int[tamanio];

7
1
8
1

//Lo volvemos a rellenar, ya que al crear el array de nuevo


no contiene los numeros anteriores
rellenarNumAleatorioArray(array1, 10, 100);

9
2

//Contiene el array con el resultado de multiplicar los

2 valores de los arrays

int array3[]=multiplicador(array1, array2);

1
2

//Mostramos el contenido de los arrays

2
2
3

System.out.println("Array1");

mostrarArray(array1);

4
2

System.out.println("Array2");

mostrarArray(array2);

2
6

System.out.println("Array3");

mostrarArray(array3);

7
2

//Llamamos al recolector de basura

System.gc();

2
9
3
0
3
1
3

}
public static void rellenarNumAleatorioArray(int lista[], int a,
int b){
for(int i=0;i<lista.length;i++){
//Generamos un nmero entre los parametros pasados

lista[i]=((int)Math.floor(Math.random()*(a-b)+b));

2
3

3
4

public static void mostrarArray(int lista[]){

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

5
3
6

System.out.println("En el indice "+i+" esta el valor


"+lista[i]);

3
7
3
8

}
}
public static int[] multiplicador(int array1[], int array2[]){
int array3[]=new int[array1.length];

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

array3[i]=array1[i]*array2[i];

4
0

return array3;

1
4 }
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5

3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
14. 5) Crea un array de nmeros de un tamao pasado por teclado, el array contendr nmeros
aleatorios entre 1 y 300 y mostrar aquellos nmeros que acaben en un dgito 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 nmeros acabados en 5,
podra salir 155, 25, etc.
1 import javax.swing.JOptionPane;
2 public class NumTerminadosEnApp {
3
4

public static void main(String[] args) {

5
6

//Indicamos el tamao

String texto=JOptionPane.showInputDialog("Introduce un

8 tamao");
9

int num[]=new int[Integer.parseInt(texto)];

1
0
11

int ultimoDigito;
do{

texto=JOptionPane.showInputDialog("Introduce numero entre

1
2 0 y 9");
1

ultimoDigito=Integer.parseInt(texto);

}while(!(ultimoDigito>=0 && ultimoDigito<=9));

1
4

//rellenamos el array

rellenarNumAleatorioArray(num, 1, 300);

5
1
6
1

//Creamos un array que contenga los numeros terminados en el


numero especificado
int terminadosEn[]=numTerminadosEn(num, ultimoDigito);

7
1
8
1

//Mostramos el resultado, mira el metodo de mostrarArrays


//

mostrarArrayTerminadosEn(num);
mostrarArrayTerminadosEn(terminadosEn);

9
2
0

public static void rellenarNumAleatorioArray(int lista[], int a,

1 int b){

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

2
2

//Generamos un nmero entre los parametros pasados

lista[i]=((int)Math.floor(Math.random()*(a-b)+b));

3
2

}
}

4
2

public static void mostrarArrayTerminadosEn(int lista[]){

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

//No incluimos las posiciones que tengan un 0

if(lista[i]!=0){

2
7
2

System.out.println("El numero "+lista[i]+" acaba en


el numero deseado");
}

2
9

3
0

public static int[] numTerminadosEn (int num[], int ultimo_numero){

3
1

//Array que almacenara los numeros terminados en el numero

3 pedido
2

int terminadosEn[]=new int[num.length];

3
3

int numeroFinal=0;

3
4

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

3
5

/*

* Restamos el numero por el mismo numero sin unidades

* Por ejemplo, 325-320=5

*/

numeroFinal=num[i]-(num[i]/10*10);

3
8

//Si el numero obtenido es el buscado, lo aadimos

if (numeroFinal==ultimo_numero){

terminadosEn[i]=num[i];

4
1

return terminadosEn;

4
2
4
3 }
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3

5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7

6) 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 23, el
resultado debe estar entre 0 y 22. Haz un mtodo donde segn el resultado
de la anterior formula busque en un array de caracteres la posicin que
corresponda a la letra. Esta es la tabla de caracteres:
Posicion

Letra

Posicion

Letra

10

11

12

13

14

15

16

17

18

19

20

21

22

Por ejemplo, si introduzco 70588387, el resultado sera de 7 que corresponde


a F.

1 import javax.swing.JOptionPane;
2 public class LetraDNIApp {
3
4

public static void main(String[] args) {

5
6

//Declaramos como constante por lo que dividir

final int DIVISOR=23;

8
9

//Insertamos el DNI

String texto=JOptionPane.showInputDialog("Escribe los numero de tu

0 DNI");
1
1

int dni=Integer.parseInt(texto);

1
2

//Sacamos el resto
int res=dni%DIVISOR;

1
3
1
4

//Invocamos el metodo
char letra=letraNIF(res);

1
5

//Mostramos el DNI completo

1
6
1
7
1
8

System.out.println("Tu DNI es " +dni+letra);

}
public static char letraNIF(int res){

1
9
2
0
2
1
2
2
2
3
}
2
4 }
2
5
2
6
2
7
2
8
2
9

//Definimos el array de char


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

//Devolvemos el valor en la posicion del array


return letrasNIF[res];

3
0
3
1
3
2
3
3
7) Crea un array de nmeros 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 nmeros, en el de
Strings se insertaran los nombres de los alumnos.
Despus, 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
mtodos que creas conveniente.

1 import javax.swing.JOptionPane;
2 public class NotasApp {
3
4

public static void main(String[] args) {

5
6

//Tamao del array

final int TAMANIO=10;

8
9

//Creamos los arrays

1
0

String nombres[]=new String[TAMANIO];


double notas[]=new double[TAMANIO];

1
1
1
2

//Rellenamos el array de una vez


rellenarArrays(notas, nombres);

1
3

//Devuelve las notas con palabras

1
4

String resultado[]=aadeResultado(notas);

1
5

//Mostramos el resultado

1
6

mostrarArrays(nombres, notas, resultado);

1
7

1
8

public static void rellenarArrays(double notas[], String nombres[]){

1
9

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

//Introducimos los valores de una vez, se pueden hacer en


2 metodos separados
0
nombres[i]=JOptionPane.showInputDialog("Introduce el nombre
2 del alumno "+(i+1));
1
2
2

double nota;
//Validamos la nota

2
3
2
4

do{
String texto=JOptionPane.showInputDialog("Introduce una nota
del alumno "+(i+1));

2
5

nota=Double.parseDouble(texto);
System.out.println(nota<=0 || nota>=10);

2
6

}while(nota<=0 || nota>=10);

2
7
2
8

notas[i]=nota;
}
}

2
9

public static void mostrarArrays(String nombres[], double notas[],


3 String resultado[]){
0
for(int i=0;i<nombres.length;i++){
3
System.out.println("El alumno "+nombres[i]+" tiene una nota de
1 "+notas[i]+", por lo que su resultado es "+resultado[i]);
3

3
3

public static String[] aadeResultado(double notas[]){

3
4
String resultado[]=new String[notas.length];

3
5

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

3
6

//Convertimos la nota a entero, despues se quedara como estaba


switch((int)notas[i]){

3
7

case 1:

3
8

case 2:

3
9

case 4:

case 3:

resultado[i]="Suspenso";

4
0

break;
case 5:

4
1

case 6:

4
2

resultado[i]="Bien";
break;

4
3

case 7:

4
4

case 8:
resultado[i]="Notable";

4
5

break;
case 9:

4
6

case 10:

4
7

resultado[i]="Sobresaliente";
break;

4
8

}
}

4
9

return resultado;

5
0
5
1

}
}

5
2
5
3
5
4
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7

1
7
2
7
3
7
4
8) Crea una aplicacin que pida un numero por teclado y despus
comprobaremos si el numero introducido es capicua, es decir, que se lee
igual sin importar la direccin. Por ejemplo, si introducimos 30303 es
capicua, si introducimos 30430 no es capicua. Piensa como puedes dar la
vuelta al nmero. Una forma de pasar un nmero a un array es esta
Character.getNumericValue(cadena.charAt(posicion)).

1 import java.util.Arrays;
2 import javax.swing.JOptionPane;
3 public class CapicuaApp {
4
5

public static void main(String[] args) {

6
7
8
9
1
0
1
1
1
2
1
3

//Introducimos un numero
String numero=JOptionPane.showInputDialog("Introduce un
nmero");

/*
* Aprovechamos el String para averiguar la longitud del numero,
* para crear un array compatible, y para dividirlo digitos
*/
int digitos[]=convierteNumeroAArray(numero, numero.length());

1
//Invocamos el metodo, segun el resultado mostramos un mensaje u
4 otro
1
5

if (EsCapicua(digitos)){

1
6

}else{

System.out.println("El numero "+numero+" es capicua");

7
1
8
1
9

System.out.println("El numero "+numero+" no es capicua");


}
}
public static int[] convierteNumeroAArray(String numero, int longitud){

2
0

int digitos[]=new int[longitud];

2
1

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

2
2

digitos[i]=Character.getNumericValue(numero.charAt(i));
}

2
3

return digitos;

2
4

2
5

public static boolean EsCapicua (int lista[]){

2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4

//Creamos otro array


int listaprueba[]=new int [lista.length];

/*
* Asignamos los valores al nuevo array lo hacemos aadiendo
* los ultimos valores del primer array, al principio del nuevo array
* ,es decir, le damos la vuelta al array
*/
for (int i=0, j=1;j<=lista.length;i++, j++){
listaprueba[i]=lista[lista.length-j];
}

//Usamos el metodo de java.util.Arrays para comparar los arrays


if (Arrays.equals(lista, listaprueba)){

3
5
3
6

return true;
}

3
7
3
8
3
9 }
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5

return false;

6
9) Crea dos arrays multidimensionales de 23 y rellenalos como quieras
(nmeros aleatorios, por teclado o definido al crear el array).
Haz un mtodo que sume los arrays multidimensionales, es decir, la
posicin 0, 0 del array1 con la posicin del array2 y as sucesivamente, este
metodo no debe devolver nada, haciendo que deba pasarse el array
multidimensional de suma como parmetro. Muestra el contenido de cada
array multidimensional.

1 public class SumaMatricesApp {


2
3

/**

* @param args

*/

public static void main(String[] args) {

7
8

//Creamos los arrays multidimensionales

int tabla1[][]=new int [2][3];

1
0

int tabla2[][]=new int [2][3];


int sumamatrices[][]=new int [tabla1.length][tabla1[0].length];

1
1
1
2

//Rellenamos los dos primeros arrays


rellenarArrays(tabla1, 1, 200);

1
3

rellenarArrays(tabla2, 1, 200);

1
4

//Sumamos los arrays

1
5

SumaMatrices(tabla1, tabla2, sumamatrices);

1
6

//Mostramos los arrays

1
7

imprimirTabla(tabla1);

1
8
1

System.out.println("Array1 ");

System.out.println("Array2");
imprimirTabla(tabla2);

9
2
0
2
1
2
2

System.out.println("La suma de matrices es ");


imprimirTabla(sumamatrices);
}
public static void rellenarArrays(int tabla[][], int a, int b){
for(int i=0;i<tabla.length;i++){

2
3

for(int j=0;j<tabla[0].length;j++){

2
4

2
5
2
6
2
7

tabla[i][j]=((int)Math.floor(Math.random()*(a-b)+b));

}
}

public static void imprimirTabla (int tabla[][]){


for (int i=0;i<tabla.length;i++){
for (int j=0;j<tabla[0].length;j++){

2
8

System.out.print(tabla[i][j]+ " ");

2
9

}
System.out.println("");

3
0

3
1
3
2

System.out.println("");

public static int[][] SumaMatrices (int tabla1[][], int tabla2[][], int


3
sumamatrices[][]){
3
3
4

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

3
5

for (int j=0;j<sumamatrices[0].length;j++){

3
6

3
7
3
8

sumamatrices[i][j]=tabla1[i][j]+tabla2[i][j];

System.out.println("");
}
return sumamatrices;

3
9
4
}
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5
7
5

8
5
9
10) Queremos realizar una encuesta a 10 personas, en esta encuesta
indicaremos el sexo (1=masculino, 2=femenino), si trabaja (1=si trabaja,
2= no trabaja) y su sueldo (si tiene un trabajo, sino sera un cero) estar
entre 600 y 2000 (valor entero). Los valores pueden ser generados
aleatoriamente. Calcula y muestra lo siguiente:
Porcentaje de hombres (tengan o no trabajo).
Porcentaje de mujeres (tengan o no trabajo).
Porcentaje de hombres que trabajan.
Porcentaje de mujeres que trabajan.
El sueldo promedio de las hombres que trabajan.
EL sueldo promedio de las mujeres que trabajan.
Usa todos los mtodos que veas necesarios, piensa que es aquello que se
repite o que puede ser mejor tenerlo por separado.

1 public class EncuestaApp {


2
3

public static void main(String[] args) {

4
5

final int ENCUESTADOS=10;

6
7

//Creamos la tabla de la Encuesta, no importa si es de 3x20 o 20x3

int lista[][]=new int [3][ENCUESTADOS];

9
10

//Rellenamos la tabla

11

rellenoSexo(lista);

12

rellenoTrabajo(lista);

13

rellenoSueldo(lista);

14
15

//Mostramos la tabla, es opcional mostrarla

16

imprimirArray(lista);

17

18
19
20
21

//Mostramos los datos


System.out.println("Hay un "+porcHombresMujeres(lista, 1)+" % de
hombres");
System.out.println("Hay un "+porcHombresMujeres(lista, 2)+" % de
mujeres");

22
23

System.out.println("Hay un "+porcHombresMujeresTrabajo(lista, 1,
24 1)+" % de hombres que trabajan");
25
26

System.out.println("Hay un "+porcHombresMujeresTrabajo(lista, 2,
1)+" % de mujeres que trabajan");

27

System.out.println("Hay un "+porcHombresMujeresTrabajo(lista, 1,
28 2)+" % de hombres que no tiene trabajo");
29

System.out.println("Hay un "+porcHombresMujeresTrabajo(lista, 2,
2)+"
% de mujeres que no tiene trabajo");
30
31
32
33

System.out.println("El sueldo medio es de "+promedioSueldo(lista,


1, 1));

System.out.println("El sueldo medio es de "+promedioSueldo(lista,


34 2, 1));
35
36

37

public static void rellenoSexo (int lista[][]){

38

for (int i=0;i<lista[0].length;i++){

39

int numero=(int)Math.floor(Math.random()*2+1);

40

lista[0][i]=numero;

41

42

43

public static void rellenoTrabajo (int lista[][]){

44

for (int i=0;i<lista[1].length;i++){

45

int numero=(int)Math.floor(Math.random()*2+1);

46

lista[1][i]=numero;

47

48

49

public static void rellenoSueldo (int lista[][]){

50

for (int i=0;i<lista[1].length;i++){

51

for (int j=0;j<lista[2].length;j++){

52

if (lista[1][j]==2){

53

lista[2][j]=0;

54

}else{

55

int numero=(int)Math.floor(Math.random()*1000+500);

56

lista[2][j]=numero;

57

58

59
60
61

}
}

62
63

public static void imprimirArray (int lista[][]){

64

//Esto solo es cuestion de estetica

65

String datoEncuesta[]={"Sexo", "Trabajo", "Sueldo"};

66

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

67

System.out.println(datoEncuesta[i]);

68

for (int j=0;j<lista[i].length;j++){

69
70

System.out.println("En la fila " +i+" y columna " +j+ " tiene "
+lista[i][j]);
}

71
72
}

73
74
75
76
77

}
public static double porcHombresMujeres (int lista[][], int sexo){
int contador=0;
for(int i=0;i<lista[0].length;i++){
if (lista[0][i]==sexo){

78

contador+=1;

79
}

80
81

82

double porcentaje=(contador*100)/lista[0].length;

83

return porcentaje;

84
85
86

}
public static double porcHombresMujeresTrabajo (int lista[][], int sexo,
int trabajo){
int contador=0;

87

double porcentaje_sexo=0;

88

double porcentaje=0;

89

for(int i=0;i<lista[0].length;i++){

90

if (lista[0][i]==sexo && lista[1][i]==trabajo){

91

contador+=1;

92
}

93
}

94

if(sexo==1){

95

porcentaje_sexo=porcHombresMujeres(lista, 1);

96

porcentaje=(contador*100)/(porcentaje_sexo/10);

97

}else{

98

porcentaje_sexo=porcHombresMujeres(lista, 2);

99

porcentaje=(contador*100)/(porcentaje_sexo/10);

10
0

10
1
10
2
10
3

return porcentaje;
}
public static double promedioSueldo(int lista[][], int sexo, int trabajo){
int contador=0;

10
4

double suma=0;

10
5

for(int i=0;i<lista[0].length;i++){

10
6
10
7
10

double promedio=0;

if (lista[0][i]==sexo && lista[1][i]==trabajo && lista[2][i]!=0){


suma+=lista[2][i];
contador+=1;
}

8
10
9

11
0

return promedio;

11
1

promedio=suma/contador;

11 }
2
1. Calcular la media de una serie de nmeros que se leen por teclado.
Programa Java que lea por teclado 10 nmeros enteros y los guarde en un array. A
continuacin calcula y muestra por separado la media de los valores positivos y la
de los valores negativos.
/*
* Programa que lea por teclado 10 nmeros enteros y los guarde en un array.
* A continuacin calcula y muestra la media de los valores positivos y la de los
valores negativos.
*/
import java.util.*;
public class Media1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
int pos = 0, neg = 0; //contadores de los nmeros positivos y negativos
int[] numeros = new int[10]; //array que contendr los nmeros ledos por
teclado
double sumaPos = 0, sumaNeg = 0; //acumuladores para las sumas de
positivos y negativos
//lectura de datos y llenar el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < 10; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i]=sc.nextInt();
}
//recorrer el array para sumar por separado los nmeros positivos
// y los negativos
for (i = 0; i < 10; i++) {
if (numeros[i] > 0){ //sumar positivos
sumaPos += numeros[i];
pos++;
} else if (numeros[i] < 0){ //sumar negativos
sumaNeg += numeros[i];
neg++;
}
}
//Calcular y mostrar las medias

if (pos != 0) {
System.out.println("Media
} else {
System.out.println("No ha
}
if (neg != 0) {
System.out.println("Media
} else {
System.out.println("No ha
}

de los valores positivos: " + sumaPos / pos);


introducido numeros positivos");
de los valores negativos: " + sumaNeg / neg);
introducido numeros negativos");

2. Programa Java que lea 10 nmeros enteros por teclado y los guarde en un array.
Calcula y muestra la media de los nmeros que estn en las posiciones pares del
array.
Considera la primera posicin del array (posicin 0) como par.
/*
* Leer 10 nmeros enteros y guardarlos
* en un array. Calcular la media de los
* que estn en las posiciones pares.
*/
import java.util.*;
public class Arrays1_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
int[] numeros = new int[10];
double media = 0;
//lectura de datos y llenar el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < 10; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i] = sc.nextInt();
}
//Recorrer el array y calcular la media
for (i = 0; i < 10; i++) {
if (i % 2 == 0){ //si la posicin actual es par
media = media + numeros[i]; //se suma el valor de esa posicin
}
}
//Calcular y mostrar la media
System.out.println("Media de los valores que se encuentran en posiciones
pares: "+ media/5);
}
}

3. Programa que lee por teclado la nota de los alumnos de una clase y calcula la
nota media del grupo. Tambin muestra los alumnos con notas superiores a la
media. El nmero de alumnos se lee por teclado.
Este programa utiliza un array de elementos de tipo double que contendr las notas
de los alumnos.
El tamao del array ser el nmero de alumnos de la clase, por lo tanto primero se
pedir por teclado el nmero de alumnos y a continuacin se crear el array.
Se realizan 3 recorridos sobre el array, el primero para asignar a cada elemento las
notas introducidas por teclado, el segundo para sumarlas y calcular la media y el
tercero para mostrar los alumnos con notas superiores a la media.
import java.util.*;
public class MediaDeLaClase {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numAlum, i;
double suma = 0, media;
//Lectura del nmero de alumnos. Debe ser un valor positivo
do {
System.out.print("Nmero de alumnos de la clase: ");
numAlum = sc.nextInt();
} while (numAlum <= 0);
//se crea un array llamado notas de numAlumn elementos de tipo double
double[] notas = new double[numAlum];
// Entrada de datos. Se lee la nota de cada alummo y se guarda
// en cada elemento del array
for (i = 0; i < notas.length; i++) {
System.out.print("Alumno " + (i + 1) + " Nota final: ");
notas[i] = sc.nextDouble();
}
// Sumar todas las notas
for (i = 0; i < notas.length; i++) {
suma = suma + notas[i];
}
// Calcular la media
media = suma / notas.length;
// Mostrar la media
System.out.printf("Nota media del curso: %.2f %n", media);
// Mostrar los valores superiores a la media
System.out.println("Listado de notas superiores a la media: ");
for (i = 0; i < notas.length; i++) {
if (notas[i] > media) {
System.out.println("Alumno numero " + (i + 1)+ " Nota final: " +
notas[i]);
}
}
}

}
4. Programa que crea un array de 20 elementos llamado Pares y guarde los 20
primeros nmeros pares. Mostrar por pantalla el contenido del array creado.
/*
* Programa que crea un array de 20 elementos
* llamado Pares y guarde los 20 primeros
* nmeros pares.
* Mostrar por pantalla el contenido
* del array creado
*/
import java.util.*;
public class ArrayPares {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i, cont = 2;
int[] pares = new int[20];
//Llenamos el array con nmeros pares. Utilizamos un contador
//con valor inicial 2 y le sumamos dos en cada iteracin.
for (i = 0; i < pares.length; i++) {
pares[i] = cont;
cont += 2;
}

//Mostrar el array
for (i = 0; i < pares.length; i++) {
System.out.println(pares[i]);
}

5. Programa Java que guarda en un array 10 nmeros enteros que se leen por
teclado. A continuacin se recorre el array y calcula cuntos nmeros son positivos,
cuntos negativos y cuntos ceros.
// Contar el nmero de elementos positivos, negativos y ceros de un array de 10
elementos.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] numeros = new int[10];
int pos = 0, neg = 0, cero = 0; //contadores
int i;
//Leemos los valores por teclado y los guardamos en el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < numeros.length; i++) {
System.out.print("numeros[" + i + "]= ");

numeros[i] = sc.nextInt();
}
//se recorre el array para contar positivos, negativos y ceros
for (i = 0; i < numeros.length; i++) {
if (numeros[i] > 0) {
pos++;
} else if (numeros[i] < 0) {
neg++;
} else {
cero++;
}
}
//mostrar resultados
System.out.println("Positivos: " + pos);
System.out.println("Negativos: " + neg);
System.out.println("Ceros: " + cero);

}
6. Programa Java que llene un array con 10 nmeros enteros que se leen por
teclado. A continuacin calcula y muestra la media de los valores positivos y la de
los valores negativos del array.
/*
* Leer 10 nmeros enteros y mostrar la media de los valores positivos y la de los
valores negativos.
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] numeros = new int[10];
int pos = 0, neg = 0; //contadores para positivos y negativos
int i;
double sumaPos = 0, sumaNeg = 0; //suma de positivos y negativos
//Leemos los valores por teclado y los guardamos en el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < numeros.length; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i]=sc.nextInt();
}
//se recorre el array para sumar positivos y negativos
for (i = 0; i < numeros.length; i++) {
if (numeros[i] > 0){ //sumar positivos
sumaPos += numeros[i];
pos++;
} else if (numeros[i] < 0){ //sumar negativos
sumaNeg += numeros[i];
neg++;
}
}
//mostrar resultados
if (pos != 0) {
System.out.println("Media de los valores positivos: " + sumaPos / pos);
} else {
System.out.println("No ha introducido nmeros positivos");

}
if (neg != 0) {
System.out.println("Media de los valores negativos: " + sumaNeg / neg);
} else {
System.out.println("No ha introducido nmeros negativos");
}

}
7. Programa Java para leer la altura de N personas y calcular la altura media.
Calcular cuntas personas tienen una altura superior a la media y cuntas tienen
una altura inferior a la media. El valor de N se pide por teclado y debe ser entero
positivo.
/*
* Leer la altura de N personas y calcular la altura media
* Mostra cuntos hay superiores a la media.
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i, N;
int contMas = 0, contMenos = 0;
double media = 0;
//Leer el nmero de personas
do{
System.out.print("Nmero de personas: ");
N = sc.nextInt();
}while(N<=0);
//Se crea el array de tamao N
double[] alto = new double[N];
//Leer alturas
System.out.println("Lectura de la altura de las personas: ");
for (i = 0; i < N; i++) {
System.out.print("persona " + (i+1) + " = ");
alto[i] = sc.nextDouble();
media = media + alto[i]; //se suma la estatura leda para calcular la media
}
//Calcular la media
media = media / N;
//recorremos el array para ver cuantos hay ms altos
//que la media y cuantos ms bajos
for (i = 0; i < alto.length; i++) {
if (alto[i] > media){ //si la estatura es mayor que la media
contMas++;
} else if (alto[i] < media){ //si es menor
contMenos++;
}
}
//Mostrar resultados
System.out.println("Estatura media: " + media);
System.out.println("Personas con estatura superior a la media: " + contMas);
System.out.println("Personas con estatura inferior a la media: " +
contMenos);
}
}

Ejercicios Arrays Java. Leer nombre y sueldo


de 20 empleados y mostrar el que ms gana
Programa Java que lea el nombre y el sueldo de 20 empleados y muestre el nombre
y el sueldo del empleado que ms gana.
Para hacerlo utilizaremos dos arrays:
Un array de String para los nombres de los empleados
Un array de tipo double para los sueldos de cada empleado.
Al mismo tiempo que leemos los datos de los empleados iremos comprobando cul
es el que tiene el mayor sueldo. Para ello tomamos el sueldo del primer empleado
que se lee como mayor sueldo y despus vamos comprobando el resto de sueldos.
Cuando encontramos alguno mayor que el mayor actual este sueldo se convierte en
el nuevo mayor.
En general para calcular el mayor de una serie de nmeros tomamos el primero
como mayor y despus comparamos el resto de nmeros.
//programa que muestra el nombre y el sueldo del empleado que ms gana
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//creamos los arrays
String[] empleados = new String[20];
double[] sueldos = new double[20];
//variables donde guardar el nombre y sueldo del empleado que ms gana
String nombreMayor;
double mayorSueldo;
int i = 0;
//se lee el primer empleado
System.out.println("Lectura de nombres y sueldos de empleados: ");
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();
//se toma el primero como mayor
mayorSueldo = sueldos[i];
nombreMayor = empleados[i];
//se leen el resto de empleados
for (i = 1; i < empleados.length; i++) {
sc.nextLine(); //limpiar el buffer
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();
//se compara el sueldo ledo con el mayor
if (sueldos[i] > mayorSueldo) {
mayorSueldo = sueldos[i];
nombreMayor = empleados[i];

}
}

}
}

//mostrar resultados
System.out.println("Empleado con mayor sueldo: " + nombreMayor );
System.out.println("Sueldo: " + mayorSueldo);

You might also like