Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia Didactica de Lectura Unidad 5
Guia Didactica de Lectura Unidad 5
Unidad 5: ARRAYS
“Un array es una secuencia de datos del mismo tipo. Los arrays de una
dimensión; vectores; y los de dos dimensiones; tablas o matrices; son los más
utilizados.”
1
ORIENTACIÓN DEL APRENDIZAJE
o Pasar arreglos a un método y distinguir entre paso por valor y paso por
referencia.
2
A continuación le presento el esquema conceptual de esta unidad
PROBLEMA
DATOS:
Entero variable
simple
variable
Datos simples Real simple
Carácter variable
simple
Lógico variable
Simple
3
En las unidades anteriores se han descrito las características de los tipos de datos
básicos o simples -entero, real, carácter y lógico- de Java. En esta unidad
estudiaremos el tipo de dato estructurado array o arreglo, su concepto y tratamiento.
Un array almacena elementos del mismo tipo, por ejemplo diez enteros, treinta
números de coma flotante o veinticinco caracteres. Los arrays pueden ser de una
dimensión –vectores- que son los más utilizados; de dos dimensiones -tablas o
matrices-, y también de tres o más dimensiones. Un array puede almacenar
secuencias o cadenas de texto; debido a su importancia, Java proporciona la clase
String, y las operaciones con cadenas más comunes. En la próxima unidad
utilizaremos los arreglos para obtener información mediante el ordenamiento de su
elementos y la búsqueda de un determinado elemento del mismo.
- Arrays
Un array es una secuencia de datos del mismo tipo. Los datos se llaman elementos
del array y se numeran consecutivamente 0, 1, 2, 3…El tipo de elementos
almacenados en el array puede ser cualquier tipo de dato simple de Java, o de tipo
previamente declarado. Normalmente el array se utiliza para almacenar tipos tales
como char, int, o float.
Un array puede contener, por ejemplo, la edad de los alumnos de una clase, las
temperaturas de cada día de un mes de una ciudad determinada, o el número de
personas que residen en cada una de las diecisiete comunidades autónomas
españolas. Cada ítem del array se denomina elemento.
Los elementos de un array se numeran, consecutivamente 0, 1, 2, 3… Estos números
se denominan valores índice o subíndice del array. El término «subíndice» se utiliza,
ya que se especifica igual que en matemáticas, como una secuencia tal como
a 0 , a 1 , a 2 … Estos números localizan la posición del elemento dentro del array,
proporcionando acceso directo al array.
Si el nombre del array es a, entonces a [0] es el nombre del elemento que está en la
posición 0, a [1] es el nombre del elemento que está en la posición 1, etc. En general,
el elemento i-ésimo está en la posición i – 1. De modo que si el array tiene n
elementos, sus nombres son a [0], a [1],…, a [n - 1]. Gráficamente se representa así el
array a con seis elementos.
0 1 2 3 4 5
El array a tiene seis elementos: a [0] contiene 26.1, a [1] contiene 35.2, a [2] contiene
6.25, a [3] contiene 8.45, a [4] contiene 7.09 y a [5] contiene 8.54. El diagrama de la
4
Figura 5.1 representa realmente una región de la memoria de la computadora, ya que
un array se almacena siempre con sus elementos en una secuencia de posiciones de
memoria contigua.
En Java, los índices de un array siempre tienen como límite inferior 0, como índice
superior el tamaño del array menos 1.
- Declaración de un array
Al igual que con cualquier tipo de variable, se debe declarar un array antes de
utilizarlo. Un array se declara de modo similar a otros tipos de datos, excepto que se
debe indicar al compilador que es un array y esto se hace con los corchetes.
int [ ]v ;
float w [ ] ;
tipo [ ] identificador ;
tipo identificador [ ] ;
El primer formato indica que todos los identificadores son arrays del tipo. El segundo
formato es array sólo el identificador al que le siguen los [ ].
1. char cad [ ], p ;
cad es un array de tipo char ; p es una variable de tipo char.
2. int [ ] v, w ;
tanto v como w son declarados arrays unidimensionales de tipo int.
3. double [ ] m, t [ ], x ;
m y x son array de tipo double, t es un array de array con elementos de tipo
double.
Precaución
Para indicar el número de elementos que tiene un array se utiliza el operador new. Por
ejemplo, para crear una array que guarde las notas de la asignatura de Informática en
un aula de 30 alumnos:
float [ ] notas ;
5
notas = new float [30] ;
o bien,
tipo nombreArray [ ] ;
nombreArray = new tipo [numeroDeElementos] ;
Por ejemplo, para crear un array (vector o lista) de diez variables de tipo entero se
escribe:
Esta declaración hace que el compilador reserve espacio suficiente para contener 10
datos de tipo entero. En Java, los enteros ocupan, normalmente cuatro bytes, de modo
que un array de diez enteros ocupa 40 bytes de memoria. A esta memoria hay que
añadir cuatro bytes más que utiliza Java para guardar el número de elementos del
array. La Figura 5.2 muestra el esquema de un array de diez elementos; cada
elemento puede tener su propio valor.
Se puede acceder a cada elemento del array utilizando un índice en el nombre del
array. Por ejemplo,
System.out.print (a [4] ) ;
visualiza el valor del elemento 5 del array. Los arrays siempre comienzan en el
elemento 0. Así pues, el array a contiene los siguientes elementos individuales:
a [0] a [1] a [2] a [3] a [4] a [5] a [6] a [7] a [8] a [9]
final int N = 20 ;
float vector [ ] ;
vector = new float [N] ;
6
Para acceder al tercer elemento y leer un valor de entrada:
Precaución
- Subíndices de un array
a 0 equivale a a [0]
a 3 equivale a a [3]
Ejemplos
int [ ] edad = new int [5] ; Array edad contiene cinco elementos: el primero,
edad [0], y el último, edad [4].
7
En los programas se puede referenciar elementos del array utilizando fórmulas para
los subíndices. Mientras que el subíndice pueda ser evaluado a un entero, se puede
utilizar una constante, una variable o una expresión para el subíndice. Así, algunas
referencias individuales a elementos son:
edad [4]
ventas [total + 5]
bonos [mes]
salario [mes [ i ] *5]
Los elementos de los arrays se almacenan en bloques contiguos. Así, por ejemplo, los
arrays
int edad [ ] ;
char codigo [ ] ;
edad = new int [5] ;
codigo = new char [5]
Nota
Los arrays de caracteres funcionan de igual forma que los arrays numéricos, partiendo
de la base de que cada carácter ocupa normalmente dos bytes. Así, por ejemplo, un
array llamado nombre se puede representar en la Figura 5.4.
8
nombre
C [0]
a [1]
r [2]
l [3]
o [4]
s [5]
Java considera cada array un objeto, debido a ello se puede conocer el número de
elementos de un array accediendo al campo length. Este campo resulta muy útil
cuando se pasa un array a un método.
Ejemplo 5.2 El método suma ( ) tiene como argumento un array de tipo double.
Se quiere que devuelva la suma de sus elementos.
Para escribir este método, se define una variable que acumula los elementos del
array. En un bucle con tantas iteraciones como elementos (longitud) se determina la
suma.
Precaución
w.length ; / / es correcto
w.length ( ) ; / / es un error
9
- Inicialización de un array.
Se deben asignar valores a los elementos del array antes de utilizarlos, tal como se
asignan valores a variables. Para asignar valores a cada elemento del array de
enteros a, se puede escribir:
a [0] = 10 ;
a [1] = 20 ;
a [2] = 30 ;
a [3] = 40 ;
…
La primera sentencia fija a [0] al valor 10, a [1] al valor 20, etc. Sin embargo, este
método no es práctico cuando el array contiene muchos elementos. El método usado,
normalmente, es inicializar el array completo en una sola sentencia.
Cuando se inicializa un array, el tamaño del array se puede determinar
automáticamente por las constantes de inicialización. Estas constantes se separan por
comas y se encierran entre llaves, como en los siguientes ejemplos:
int precio [ ] = {10, 20, 30, 40, 50, 60} ; / * Define un array de 6 elementos y
se inicializan a las constantes * /
El array precio tiene seis elementos, a tiene tres elementos, y c tiene cuatro
elementos.
Nota
La serie de valores entre corchetes sólo puede ser usada para inicializar un array y
no en sentencias de asignación posteriores.
int cuenta [ ] = {15, 35, -45, 0, 60}
El compilador asigna automáticamente cinco elementos a cuenta.
int edades [ ] = new int [5] ;
edades [ ] = {14, 32, 17, 20, 50} ; / / es una sentencia errónea.
final int ENE = 31, FEB = 28, MAR = 31, ABR = 30, MAY = 31,
JUN = 30, JUL = 31, AGO = 31, SEP = 30, OCT = 31,
10
NOV = 30, DIC = 31 ;
…
int meses [ ] = {ENE, FEB, MAR, ABR, MAY, JUN,
JUL, AGO, SEP, OCT, NOV, DIC } ;
debido a que el valor del subíndice i varía de cero al número de elementos -1, cada
elemento del array numero se inicializa a -1.
import java.io.* ;
class Inicial
{
public static void main (String [ ] a) throws IOException
{
final int NUM = 5;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
int numero [ ] = new int [NUM ] ;
int total = 1 ;
System.out.println (“Por favor, introduzca” + NUM + “datos”) ;
System.out.flush ( ) ;
for (int i = 0; i < NUM; i++)
{
numero [ i ] = Integer.parseInt (entrada.readLine ( )) ;
}
System.out.print (“ \ nLista de números: ”) ;
for (int i = 0; i < NUM; i++)
{
System.out.println (“ ” + numero [ i ] ) ;
total *= numero [ i ] ;
}
System.out.println (“ \ nEl producto de los números es ” + total) ;
}
}
Los arrays en Java se inicializan a 0 por defecto. Para ello, la ejecución del siguiente
programa visualiza 0 para los 10 valores del array:
11
Nota
El compilador Java inicializará cualquier array con un valor por defecto, ceros
binarios, ya sea el array de tipo entero, real o de caracteres.
Actividad de proceso Nº 1
Una cadena de texto es un conjunto de caracteres, tales como “AEIOU”. Java soporta
cadenas de texto utilizando la clase String y StringBuffer implementada en el paquete
Java.lang.
char datos [ ] = {´M´, ´a´, ´r´, ´t´, ´a´} ; / / define array de 5 elementos
String dat = new String (datos) ; / * crea un objeto cadena con el constructor
que tiene como argumento un array de caracteres * /
Una vez que un objeto String es creado e inicializado con una cadena, no puede
modificarse. Los métodos definidos en String para concatenar o cambiar caracteres,
no modifican la cadena, sino que devuelven otro objeto String. Se puede decir que las
cadenas de tipo String son de sólo lectura.
Para concatenar constantes de cadena se utiliza el operador +, como ya se ha hecho
en la salida mediante print ( ) o println ( ). El operador está sobrecargado para poder
convertir otros tipos de datos a tipo cadena y poder realizar la concatenación. Así:
int h =12 ;
12
System.out.print (“valor de h = ” + h) ; / * concatena y forma la
cadena “valor de h = 12” * /
Ejemplo 5.4 El programa crea un array de cadenas con las líneas de texto leídas
desde el teclado.
import java.io.* ;
class Cadenas
{
public static void main (String [ ] a) throws IOException
{ int i;
final int NUM = 10 ;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
String [ ] cads = new String [NUM] ;
System.out.println (“ \ n\ tIntroduzca” + NUM + “líneas”) ;
for (i = 0; i < NUM; i++)
cads [ i ] = entrada.readLine ( ) ;
System.out.println (“ \ n\ tLíneas tecleadas”) ;
for (i = 0; i < NUM; i++)
System.out.println (i + “:” + cads [ i ] ) ;
}
}
Actividad de proceso Nº 2
Desarrolle un programa Java que lea los nombres de 10 personas y los imprima en
pantalla.
Los arrays vistos anteriormente se conocen como arrays unidimensionales (una sola
dimensión) y se caracterizan por tener un solo subíndice. Estos arrays se conocen
también por el término vectores o listas. Los arrays multidimensionales son aquellos
que tienen más de una dimensión y, en consecuencia, más de un índice. Los arrays
más usuales son los de dos dimensiones, conocidos también por el nombre de tablas
o matrices. Sin embargo, es posible crear arrays de tantas dimensiones como
requieran sus aplicaciones, esto es, tres, cuatro o más dimensiones.
13
Un array de dos dimensiones equivale a una tabla con múltiples filas y múltiples
columnas (Fig. 5.5).
0 1 2 3 n
0
14
final int N =3 ;
matriz = new double [N] [N] ; / / matriz cuadrada de N*N elementos
El operador new se puede aplicar a la vez que se hace la declaración. La sintaxis para
definir una matriz:
Atención
Java requiere que cada dimensión esté encerrada entre corchetes. La sentencia
no es válida
Los arrays multidimensionales de pueden inicializar, al igual que los de una dimensión,
cuando se declaran. La inicialización se hace utilizando llaves, encerrando entre llaves
la lista de constantes separadas por comas de que consta cada fila como en los
ejemplos siguientes:
15
1. int tabla1 [ ] [ ] = { {11, 12, 13}, {14, 15, 16} } ;
Se ha definido una matriz de dos filas por tres columnas cada fila.
int tabla1 [ ] [ ] = {
{11, 12, 13}
{14, 15, 16}
};
2. int tabla2 [ ] [ ] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
tabla1 [ ] [ ]
0 1 2 Columnas
Filas 0 11
1 12 13
1 14 15 16
tabla2 [ ] [ ]
0 1 2 3 Columnas
Filas 0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
Java trata los arrays de dos o más dimensiones como array de arrays, por ello se
pueden crear arrays de dos dimensiones no cuadradas. En los siguientes ejemplos se
crean arrays de distintos elementos cada fila.
16
Nota
ventas length
length
ventas [1] [0]
ventas [1] [1]
length
ventas [2][0]
Precaución
Se puede acceder a los elementos de arrays bidimensionales de igual forma que a los
elementos de un array unidimensional. La diferencia reside en que en los elementos
bidimensionales deben especificarse los índices de la fila y la columna.
El formato general para asignación directa de valores a los elementos es:
inserción de elementos
17
<nombre array> [indice fila] [indice columna] = valor elemento ;
extracción de elementos
y de extracción
Los métodos de entrada o salida se aplican de igual forma a los elementos de un array
bidimensional. Por ejemplo:
else
System.out.println (“Asiento ocupado”) ;
18
Se puede acceder a los elementos de arrays bidimensionales mediante bucles
anidados. Su sintaxis es:
El número de filas y de columnas de puede obtener con el atributo length. Con este
atributo, la sintaxis para acceder a los elementos:
<tipo> Matriz [ ] [ ] ;
Ejemplo 5.5 Define una matriz a, el número de filas y de columnas son datos de
entrada. Rellena la tabla con datos de entrada y se muestran por pantalla.
float a [ ] [ ] ;
System.out.flush ( ) ;
System.out.flush ( ) ;
/ / Entrada de datos
}
System.out.println (“ ”) ;
} 19
/ * Visualizar la tabla * /
Actividad de proceso Nº 3
Java proporciona la posibilidad de almacenar varias dimensiones, aunque rara vez los
datos del mundo real requieren más de dos o tres dimensiones. El medio más fácil de
dibujar un array de tres dimensiones es imaginar un cubo tal como se muestra en el
Figura 5.8.
Un array tridimensional se puede considerar como un conjunto de arrays
bidimensionales combinados juntos para formar, en profundidad, una tercera
dimensión. El cubo se construye con filas (dimensión vertical), columnas (dimensión
horizontal) y planos (dimensión en profundidad). Por consiguiente, un elemento dado
se localiza especificando su plano, fila y columna. Una definición de un array
tridimensional equipos es:
20
3
El array libro tiene tres dimensiones [PAGINAS] [LINEAS] [COLUMNAS], que definen
el tamaño del array. El tipo de datos del array es char, ya que todos los elementos son
caracteres.
¿Cómo se puede acceder a la información del libro? El método más fácil es mediante
bucles anidados. Dado que el libro se compone de un conjunto de páginas, el bucle
más externo será el de página, y el bucle de columnas será el más interno. Esto
significa que el bucle de filas se insertará entre los bucles página y columna. El código
siguiente permite procesar el array:
21
Ejercicio 5.1 Comprobar si una matriz de números enteros es simétrica respecto a la
diagonal principal.
La matriz se genera internamente, va a tener valores de 0 a 7 que se obtienen con el
método random ( ) multiplicado por N (8). El tamaño de la matriz se pide como dato de
entrada. El método lógico simétrica ( ) determina si la matriz es simétrica. El método
main ( ) genera matrices hasta encontrar una que sea simétrica y la escribe en
pantalla.
/*
Determina si una matriz es simétrica. La matriz se genera con números
aleatorios de 0 a 7. El programa itera hasta encontrar una matriz
simétrica.
*/
import java.io.* ;
class MatrizSimetrica
{
public static void main (String [ ] arg) throws IOException
{ BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
int a[ ][ ] ;
int n, i, j ;
boolean es_sim ;
System.out.print ("Número de filas/columnas: ") ;
System.out.flush ( ) ;
n = Integer.parseInt (entrada.readLine ( )) ;
a = new int [n][n] ;
do {
gen_mat (a) ;
es_sim = simetrica (a) ;
if (es_sim)
{
System.out.println (" \n\t Encontrada matriz simetrica.\n") ;
escribe_mat (a) ;
}
}while (!es_sim) ;
}
static void gen_mat (int a [ ] [ ] )
{
int i, j ;
final int N = 8 ;
for (i = 0; i < a.length; i++)
for (j = 0; j < a [ i ].length; j++)
a[ i ] [ j ] = (int)( Math.random ( )*N );
}
22
static boolean simetrica (int a [ ] [ ] )
{
int i, j ;
boolean es_simetrica = true ;
for (i =0; i < a.length - 1 && es_simetrica; i++)
{
for (j = i + 1; j < a [ i ].length && es_simetrica; j++)
// asigna false si no coincide
es_simetrica = a [ i ] [ j ] == a [ j ] [ i ] ;
}
return es_simetrica ;
}
En Java, todas las variables de tipos primitivos, double, float, char, int, boolean se
pasan por valor. Los objetos siempre se pasan por referencia, los arrays en Java se
considera que son objetos y por tanto se pasan por referencia (dirección). Esto
significa que cuando se llama a un método o función y se utiliza un array como
parámetro, se debe tener cuidado de no modificar el array en una función llamada.
23
Dadas las declaraciones
se puede declarar un método que acepte un array de valores double como parámetro.
SumaDeDatos (datos) ;
El argumento del método que se corresponde con un array se declara poniendo el tipo
de los elementos, el identificador y los corchetes en blanco, tantos corchetes como
dimensiones. El número de elementos del array no se pasa como argumento, ya que
el tamaño del array se conoce con el atributo length. El método SumaDeMats ( ) tiene
dos argumentos arrays bidimensional:
Por ejemplo:
final int N = 5 ;
double mat1 [ ] [ ] = new double [N] [N] ;
double mat2 [ ] [ ] = new double [N] [N] ;
SumaDeMats (mat1, mat2) ;
El código que se utiliza para pasar un array a un método incluye el tipo de elemento
del array y su nombre. El número de elementos no se pasa mediante una variable
entera independiente, sino que se obtiene con el atributo length. Cuando se pasa un
array a un método, se pasa realmente sólo la dirección de memoria donde comienza el
array. Este valor se representa por el nombre del array a. El método puede cambiar
entonces el contenido del array accediendo directamente a las celdas de memoria en
donde se almacenan los elementos del array.
24
Actividad de proceso Nº 4
Desarrollar un programa Java que mediante un método leerArray lea los datos de un
array unidimensional de tipo double y mediante un método producto calcule el
producto de sus elementos pares, debiendo imprimir este resultado en el programa
principal.
25
Ejemplo 5.6 Paso de arrays a métodos o funciones. En el ejemplo se lee un array y se
escribe el producto de los elementos positivos.
import java.io.* ;
class ProductoMat
{
26
Ejecución
Número de elementos: 4
Introduzca 4 datos
2.0
-15.25
40.0
0.0
El producto de los elementos positivos es = 80.0
Ejercicio 5.2 Escribir un método que calcule el máximo de los elementos de un array
especificado.
Aunque un array entero siempre se pasa por referencia, elementos individuales del
array de tipo de datos primitivos se pasan por valor como si fueran variables del tipo
de datos del array. En el siguiente ejemplo se pasa el array cuantos y su primer
elemento cuantos[0] al método mayorque ( ) :
Precauciones
Cuando se utilice una variable array como argumento de un método, éste conoce
cuántos elementos existen en el array. Puede ocurrir que no todos los elementos sean
significativos, en ese caso hay que pasar un segundo parámetro que indique el
número real de elementos, siempre los elementos se ajustan a la izquierda desde el
índice 0 al último elemento real.
El método SumaDeEnteros ( ) suma los valores de los n elementos de un array y
devuelve el total.
/ / la llamada al método
27
int lista [ ] = new int [33] ;
n = 10 ;
SumaDeEnteros (lista, n) ;
En caso necesario, se pueden utilizar dos métodos alternativos para permitir que
un método conozca el número de argumentos asociados con un array que se pasa
como argumento al método:
• Situar un valor de señal al final del array que indique al método que se ha de
detener el proceso en el momento de alcanzar el valor señal.
• Pasar un segundo argumento que indica el número de elementos del array.
Ejemplo 5.7 Este programa introduce una lista de cómo máximo 21 números enteros
y calcula su suma y el valor máximo. La entrada de datos termina al introducir el dato
clave -1.
El programa consta del método entrada ( ), que lee desde el teclado los elementos del
array hasta se lee el dato clave, devuelve el número de elementos leído, que nunca
puede ser mayor que el máximo de elementos (atributo length). El método
sumaEnteros ( ) calcula la suma de los elementos introducidos en el array, para ello se
pasa el array y el número de elementos. El método maximo ( ) tiene los mismos
parámetros que sumaEnteros ( ) y determina el valor máximo.
import java.io.*;
class Sumamax
{
public static void main (String [ ] a) throws IOException
{
final int NUM = 21 ;
int items [ ] = new int [NUM] ;
int n ;
n = entrada (items) ; // devuelve el número real de elementos
System.out.println (" \n Suma de los elementos: " +n+"="+
sumaEnteros (items, n)) ;
System.out.println (" \n Valor máximo: " + maximo (items, n)) ;
}
28
static int entrada (int w [ ] ) throws IOException
{
int k=0 ;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
System.out.println ("Introduzca un máximo de " + w.length +
Nota: Java trata las cadenas como objetos de la clase String, por ello las reglas para
pasar arrays de caracteres como argumentos a métodos son las mismas que para
arrays de otro tipo primitivo de datos.
29
Respuestas a las Actividades de Proceso
import java.io.* ;
class Inicial
{
public static void main (String [ ] a) throws IOException
{
final int NUM = 10;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
int nums [ ] = new int [NUM ] ;
int suma = 0 ;
System.out.println (“Por favor, introduzca” + NUM + “datos”) ;
System.out.flush ( ) ;
for (int i = 0; i < NUM; i++)
{
nums [ i ] = Integer.parseInt (entrada.readLine ( )) ;
}
System.out.print (“ \ nLista de números: ”) ;
for (int i = 0; i < NUM; i++)
{
System.out.println (“ ” + nums [ i ] ) ;
suma+= nums [ i ] ;
}
System.out.println (“ \ nLa suma de los números es ” + suma) ;
}
}
import java.io.* ;
class Cadenas
{
public static void main (String [ ] a) throws IOException
{
final int NUM = 10 ;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
String [ ] cads = new String [NUM] ;
System.out.println (“ \ n\ tIntroduzca” + NUM + “nombres”) ;
for (int i = 0; i < NUM; i++)
cads [ i ] = entrada.readLine ( ) ;
System.out.println (“ \ n\ tNombres”) ;
for (int i = 0; i < NUM; i++)
System.out.println (i + “:” + cads [ i ] ) ;
}
}
30
3. Programa Java que permita la lectura y visualización de un array de dos
dimensiones ( matriz o tabla ) mediante los métodos leer( ) y visualizar( ).
import java.io.* ;
class Tabla
{
public static void main (String [ ] a1) throws IOException
{
int a [ ] [ ] = new int [3] [5] ;
leer (a) ;
visualizar (a) ;
}
static void leer (int a [ ] [ ] ) throws IOException
{
int i, j ;
BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
System.out.println (“Entrada de datos de la matriz”) ;
for (i = 0; i < a.length; i++)
{
System.out.println (“Fila: ” + i) ;
System.out.flush ( ) ;
for (j = 0; j < a.length; j++)
a [ i ] [ j ] = Integer.parseInt (entrada.readLine ( )) ;
}
}
static void visualizar (int a [ ] [ ] )
{
int i, j ;
System.out.println (“ \n\t Matriz leida \n ”) ;
for (i = 0; i < length; i++)
{
for (j = 0; j < a [ i ].length; j++)
System.out.println (a [ i ] [ j ] + “ ”) ;
System.out.println (“ ”) ;
}
}
}
31
4. Programa Java que mediante un método leerArray lea los datos de un array
unidimensional de tipo double y mediante un método producto calcule el producto de
sus elementos pares, debiendo imprimir este resultado en el programa principal.
El array tiene un número de elementos que es determinado en la ejecución del
programa. Al método leerArray( ) se le pasa el array para leer sus valores. Al método
producto( ) también se le pasa el array para poder calcular el producto de los
elementos positivos.
import java.io.* ;
class ProductoMat
{
static BufferedReader entrada = new BufferedReader (
new InputStreamReader (System.in)) ;
public static void main (String [ ] a) throws IOException
{
double v [ ] ;
int n ;
System.out.print (“Número de elementos: ”) ;
System.out.flush ( ) ;
n = Integer.parseInt (entrada.readLine ( )) ;
v = new double [n] ;
leerArray (v) ;
System.out.print (“El producto de los elementos = ” +
producto (v)) ;
}
32
Actividades de Autoevaluación
33