Está en la página 1de 12

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 de los valores positivos: " + sumaPos / pos); } else { System.out.println("No ha introducido numeros positivos"); } if (neg != 0) { System.out.println("Media de los valores negativos: " + sumaNeg / neg); } else {

System.out.println("No ha 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. /* * Programa que lea 10 nmeros enteros y los guarde en un array. * Calcula y muestra la media de los que estn en las posiciones pares. */ import java.util.*; public class Arrays1_2 {

public static void main(String[] args) { Scanner int[] double media = 0; sc numeros = int = new Scanner(System.in); i; new int[10];

//lectura de datos System.out.println("Lectura de for (i = 0; System.out.print("numeros[" numeros[i] }

y los i

llenar el array elementos del array: "); < 10; i++) { + 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); }

Arreglos
Java cuenta con un tipo de datos verdadero de posiciones secuenciales, arreglo (array), que dispone de comprobaciones exhaustivas para su correcta manipulacin; por ejemplo, la comprobacin de sobrepasar los lmites definidos para el array para evitar el desbordamiento o corrupcin de la memoria. En Java hay que declarar un arreglo antes de poder utilizarlo. Y en la declaracin hay que incluir el nombre del arreglo y el tipo de datos que se van a almacenar en l. La sintaxis general para declarar e instanciar un arreglo es:
tipoDeElementos[] nombreDelArreglo = new tipoDeElemetos[tamaoDelArreglo];

Se pueden declarar en Java arreglos de cualquier tipo:


char s[]; int iArreglo[];

Incluso se pueden construir arreglos de arreglos:


int tabla[][] = new int[4][5];

Al igual que los dems objetos en Java, la declaracin del arreglo no localiza, o reserva, memoria para contener los datos. En su lugar, simplemente localiza memoria para almacenar una referencia al arreglo. La memoria necesaria para almacenar los datos que componen el arreglo se buscar en memoria dinmica a la hora de instanciar y crear realmente el arreglo. Cuando se crea un arreglo, Java lo inicializa automticamente, utilizando false para un arreglo que almacene objetos boolean, null para un arreglo de objetos, o el equivalente a 0 en cualquier otro caso. Para crear un arreglo en Java hay dos mtodos bsicos. Se puede crear un arreglo vaco:
int lista[] = new int[50];

o bien crear el arreglo con sus valores iniciales:


String nombres[] = { "Juan","Pepe","Pedro","Maria" };

lo que es equivalente a:
String nombres[]; nombres = new String[4]; nombres[0] = new String( nombres[1] = new String( nombres[2] = new String( nombres[3] = new String(

"Juan" ); "Pepe" ); "Pedro" ); "Maria" );

No se pueden crear arreglos estticos en tiempo de compilacin:

int lista[50]; // generar un error en tiempo de compilacin

Tampoco se puede rellenar un arreglo sin declarar el tamao con el operador new:
int lista[]; for( int i=0; i < 9; i++ ) lista[i] = i;

En las sentencias anteriores simultneamente se declara el nombre del arreglo y se reserva memoria para contener sus datos. Sin embargo, no es necesario combinar estos procesos. Se puede ejecutar la sentencia de declaracin del arreglo y posteriormente, otra sentencia para asignar valores a los datos. Una vez que se ha instanciado un arreglo, se puede acceder a los elementos de ese arreglo utilizando un ndice, de forma similar a la que se accede en otros lenguajes de programacin. Los ndices de un arreglo siempre empiezan por 0.

miArreglo[5] = 6; miVariable = miArreglo[5];

Todos los arreglos en Java tienen una funcin miembro: length(), que se puede utilizar para conocer la longitud del arreglo.
int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */

El ejemplo java403.java, intenta ilustrar un aspecto interesante del uso de arreglos en Java. Se trata de que Java puede crear arreglos multidimensionales, que se veran como arreglos de arreglos. Aunque esta es una caracterstica comn a muchos lenguajes de programacin, en Java, sin embargo, los arreglos secundarios no necesitan ser todos del mismo tamao. En el ejemplo, se declara e instancia un arreglo de enteros, de dos dimensiones, con un tamao inicial (tamao de la primera dimensin) de 3. Los tamaos de las dimensiones secundarias (tamao de cada uno de los subarreglos) es 2, 3 y 4, respectivamente. En este ejemplo, tambin se pueden observar alguna otra cosa, como es el hecho de que cuando se declara un arreglo de dos dimensiones, no es necesario indicar el tamao de la dimensin secundaria a la hora de la declaracin del arreglo, sino que puede declararse posteriormente el tamao de cada uno de los subarreglos. Tambin se puede observar el resultado de acceder a elementos que se encuentran fuera de los lmites del arreglo; Java protege la aplicacin contra este tipo de errores de programacin. En Java, si se intenta acceder y almacenar datos en una parte del arreglo que est fuera de los lmites, el sistema generar una excepcin, tal como se muestra en el ejemplo. En l, la excepcin simplemente hace que el programa termine, pero se podra recoger esa excepcin e implementar un controlador deexcepciones (exception handler) para corregir automticamente el error, sin necesidad de abortar la ejecucin del programa.

La salida por pantalla de la ejecucin del ejemplo sera:


% java java403 00 012 0246 Acceso a un elemento fuera de limites Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at java403.main(java403.java:55

y el cdigo del ejemplo es el que se reproduce a continuacin:


class java403 { public static void main( String args[] ) { // Declaramos un array de dos dimensiones con un tamao de 3 en la // primera dimensin y diferentes tamaos en la segunda int miArray[][] = new int[3][]; // No especificamos el tamao de la // segunda dimensin miArray[0] = new int[2]; // El tamao de la segunda dimensin es 2 miArray[1] = new int[3]; // El tamao de la segunda dimensin es 3 miArray[2] = new int[4]; // El tamao de la segunda dimensin es 4 // Rellenamos el array con datos for( int i=0; i < 3; i++ ) { for( int j=0; j < miArray[i].length; j++ ) miArray[i][j] = i * j; } // Visualizamos los datos que contiene el array for( int i=0; i < 3; i++ ) { for( int j=0; j < miArray[i].length; j++ ) System.out.print( miArray[i][j] ); System.out.println(); } // Hacemos un intento de acceder a un elemento que se encuentre // fuera de los lmites del array System.out.println( "Acceso a un elemento fuera de limites" ); miArray[4][0] = 7; // Esa sentencia originar el lanzamiento de una excepcin de // tipo ArrayIndexOutOfBounds } }

El ejemplo java404.java, ilustra otro aspecto del uso de arreglos en Java. Se trata, en este caso, de que Java permite la asignacin de un arreglo a otro. Sin embargo, hay que extremar las precauciones cuando se hace esto, porque lo que en realidad est pasando es que se est haciendo una copia de la referencia a los mismos datos en memoria. Y, tener dos referencias a los mismos datos no parece ser una buena idea, porque los resultados pueden despistar.

La salida por pantalla que se genera tras la ejecucin del ejemplo es:
% java java404 Contenido del primer Arreglo 0 1 2 Contenido del segundo Arreglo 0 1 2 --> Cambiamos un valor en el primer Arreglo Contenido del primer Arreglo 0 10 2 Contenido del segundo Arreglo 0 10 2

Y el cdigo de la aplicacin est compuesto por las sentencias que aparecen tras estas lneas:
class java404 { int primerArreglo[]; int segundoArreglo[]; // Constructor de la clase java404() { primerArreglo = new int[3]; for( int i=0; i < 3; i++ ) primerArreglo[i] = i; segundoArreglo = new int[3]; segundoArreglo = primerArreglo; } public static void main( String args[] ) { java404 obj = new java404(); System.out.println( "Contenido del primer Arreglo" ); for( int i=0; i < 3; i++ ) System.out.print( obj.primerArreglo[i] + " " ); System.out.println(); System.out.println( "Contenido del segundo Arreglo" ); for( int i = 0; i < 3; i++ ) System.out.print( obj.segundoArreglo[i] + " " ); System.out.println(); System.out.println( "--> Cambiamos un valor en el primer Arreglo" ); obj.primerArreglo[1] = 10; System.out.println( "Contenido del primer Arreglo" ); for( int i=0; i < 3; i++ ) System.out.print( obj.primerArreglo[i] + " " ); System.out.println(); System.out.println( "Contenido del segundo Arreglo" ); for( int i=0; i < 3; i++ ) System.out.print( obj.segundoArreglo[i] + " " );

System.out.println(); } }

Resumen: Entrega n3 del curso Lenguaje de programacin Java Nivel Avanzado I.


Codificacin aprenderaprogramar.com: CU00903C

En esta entrega vamos a realizar ejercicios de repaso para afianzar conocimientos que ya debemos tener sobre Java. Crea el cdigo de dos programas que cumplan las siguientes premisas:

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 que cuando declaramos un array de 24 elementos comoint[ ] numerodecoches = new int[24];, los elementos del array que se 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]); } }

Para acceder a la informacin general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.

Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Arreglos:
Los arreglos se pueden definir como objetos en los que podemos guardar mas de una variable, es decir, al tener un unico arreglo, este puede guardar multiples variables de acuerdo a su tamao o capacidad, es importante recordar que las variables guardadas deben ser del mismo tipo, por ejemplo: Si tenemos un arreglo de tipo Numerico que puede almacenar 10 variables, solo podra almacenar 10 numeros diferentes, no otras variables como caracteres o Strings. Existen 2 tipos de arreglos, los unidimensionales, y los multidimensionales(generalmente 2 dimensiones y se les denomina matrices), en esta leccin veremos como declarar y utilizar los arreglos unidimensionales, estos son mas sencillos y faciles de comprender, y pueden servirnos para muchas aplicaciones.

Declaracin:
La estructura de declaracin de un arreglo es la siguiente:

tipo_dedato [] nombre_variable; //tambien puede declararse tipo_dedato nombre_variable[]; ejemplos:


view source

String array[]; //donde array es un arreglo que guardara variables tipo Strings double array2[]; //donde array2 es un arreglo que guardara variabels tipo double int [] array3; //donde array3 es un arreglo que guardara variables tipo int(numericas)

Definir tamao de arreglos: Para asignar a un arreglo su tamao o capacidad, se hace de la siguiente forma: arreglo = new tipo_dedato[capacidad]; ejemplo: 1 array = new String[10]; //el arreglo array guardara hasta un maximo de 10 variables de tipo String

Para realizar una declaracin de un arreglo y definir su tamao en una misma linea se puede usar la siguiente estructura: 1 String array[] = new String[10]; tamao en una misma linea //se declara un arreglo y se asigna su

Asignacin de valores a elementos del array


Una vez se tiene declarado un arreglo, y al mismo se le ha asignado un tamao o capacidad, podemos accesar a los datos dentro del mismo y asignarle valores. Para hacer esto es necesario proceder de la siguiente forma: arreglo[indicador]=valor; ejemplos: 1 array[0] = "Ejemplo"; //aqui se asigna el valor "Ejemplo" a un arreglo de String en su primera posicion array2[3] = 5; arreglo numerico; //se asigna un valor de 5 al 4to elemento de un

Es importante recordar que para accesar a los datos guardados en un arreglo se utilizan indicadores iniciando desde el 0, si un arreglo tiene un tamao de 10 variables, entonces se puede accesar a sus elementos con los indicadores del 0 al 9.

A continuacin un ejemplo mas completo:


view source

01 int array1[]; //declaracion arreglo de tipo numerico 02 03 array1 = new int[3]; //tamao del arreglo es 3 elementos 04 05 //asignacion de valores a elementos del arreglo; 06 07 array[0] =2; 08 09 array[1] = 10; 10 11 arra[2] = 7; 12 System.out.println("El valor de la posicion 1 en el arreglo es" + array[0]);

13

TipoDato nombre[]=new TipoDato[Total de elementos]; Ejemplo: float array[]=new float[10];----donde float es el tipo de dato, array el nombre q le di al arreglo y 10 sera el total de elementos que seran almacenados en el arreglo, recuerda que los tipos de datos en java son 8:

int double float char byte boolean long short hay otra forma de instanciar un arreglo y es directamente: TipoDato nombre[]=new TipoDato[]; Ejemplo: int array[]={1,2,3,4,5,6,7,8,9,10}; -----aqui se instancio un arreglo de tipo entero de 10 elementos. tambien un arreglo de objetos o clases: TipoObjeto nombre[]=new TipoObjeto[10]; Ejemplo: Alumno array[]=new Alumno[10];----donde Alumno es una clase que contiene varios tipos de datos, como nombre de alumno, numero de control de alumno, especialidad de alumno, etc... Source: taca taca XD

También podría gustarte