Programación Java: Arrays unidimensionales en Java
Arrays unidimensionales en Java
Concepto de Array o Arreglo:
Un array es una colección finita de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre común.
Para almacenar las notas utilizaremos un array de 20 elementos de tipo double y en cada elemento del array guardaremos la nota de cada alumno
Array notas:
notas[17]
notas[18]
notas[19]
Para acceder a cada elemento del array se utiliza el nombre del array y un índice que indica la posición que ocupa el elemento dentro del array.
El índice se escribe entre corchetes.
El primer elemento del array ocupa la posición 0, el segundo la posición 1, etc. En un array de N elementos el último ocupará la posición N-1.
En el ejemplo anterior, notas[0] contiene la nota del primer alumno y notas[19] contiene la del último
Los índices deben ser enteros no negativos.
1. CREAR ARRAYS UNIDIMENSIONALES
Para crear un array se deben realizar dos operaciones:
Declarar de un array
En la declaración se crea la referencia al array.
La referencia será el nombre con el que manejaremos el array en el programa.
Se debe indicar el nombre del array y el tipo de datos que contendrá.
De forma general un array unidimensional se puede declarar en java de cualquiera de estas dos formas:
tipo [] nombreArray;
tipo nombreArray[];
tipo: indica el tipo de datos que contendrá. Un array puede contener elementos de tipo básico o referencias a objetos.
nombreArray: es la referencia al array. Es el nombre que se usará en el programa para manejarlo.
int [] ventas; //array de datos de tipo int llamado ventas
double [] temperaturas; //array de datos de tipo double llamado temperaturas
String [] nombres; //array de datos de tipo String llamado nombres
Instanciar un array
Mediante la instanciación se reserva un bloque de memoria para almacenar todos los elementos del array.
La dirección donde comienza el bloque de memoria donde se almacenará el array se asigna al nombre del array.
nombreArray = new tipo[tamaño];
nombreArray: es el nombre creado en la declaración.
tipo: indica el tipo de datos que contiene.
tamaño: es el número de elementos del array. Debe ser una expresión entera positiva. El tamaño del array no se puede modificar durante la ejecución del programa.
new: operador para crear objetos. Mediante new se asigna la memoria necesaria para ubicar el objeto. Java implementa los arrays como objetos.
ventas = new int[5]; //se reserva memoria para 5 enteros y
//se asigna la dirección de inicio del array a ventas.
Lo normal es que la declaración y la instanciación se hagan en una sola instrucción:
tipo [] nombreArray = new tipo[tamaño];
Por ejemplo: int [] ventas = new int[5];
El tamaño del array también se puede indicar durante la ejecución del programa, es decir, en tiempo de ejecución se puede pedir por teclado el tamaño del array y crearlo:
System.out.print("Número de elementos del array: ");
int numeroElementos = sc.nextInt();
int [] ventas = new int[numeroElementos];
Si no hay memoria suficiente para crear el array, new lanza una excepción java.lang.OutOfMemoryError.
Diferencia entre la referencia y el contenido del array
Debe quedar clara la diferencia entre la referencia (manejador del array o nombre del array) y el contenido del array.
El nombre del array contiene la dirección de memoria del contenido del array.
2. INICIALIZAR ARRAYS UNIDIMENSIONALES
Valores iniciales por defecto para un array en java:
0 para arrays numéricos
'\u0000' (carácter nulo) para arrays de caracteres
false para arrays booleanos
null para arrays de String y de referencias a objetos.
Los valores iniciales deben aparecer en el orden en que serán asignados a los elementos del array.
El número de valores determina el tamaño del array.
double [] notas = {6.7, 7.5, 5.3, 8.75, 3.6, 6.5};
se declara el array notas de tipo double, se reserva memoria para 6 elementos y se les asignan esos valores iniciales.
//creación de un array de 4 elementos booleanos
boolean [] resultados = {true,false,true,false};
//creación de un array de 7 elementos de tipo String
String [] dias = {"Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"};
3. ACCEDER A LOS ELEMENTOS DE UN ARRAY
Se puede utilizar como índice un valor entero, una variable de tipo entero o una expresión de tipo entero.
Un elemento de un array se puede utilizar igual que cualquier otra variable. Se puede hacer con ellos las mismas operaciones que se pueden hacer con el resto de variables (incremento, decremento, operaciones aritméticas, comparaciones, etc).
Si se intenta acceder a un elemento que está fuera de los límites del array (un elemento con índice negativo o con un índice mayor que el que corresponde al último elemento del array) el compilador no avisa del error. El error se producirá durante la ejecución. En ese caso se lanza una excepción java.lang.ArrayIndexOutOfBoundsException.
Se puede saber el número de elementos del array mediante el atributo length.
Podemos utilizar length para comprobar el rango del array y evitar errores de acceso.
Por ejemplo, para asignar un valor a un elemento del array que se lee por teclado:
System.out.print("Posición: ");
System.out.print("Valor: ");
valor = sc.nextInt();
if (i>=0 && i < a.length) {
4. RECORRER UN ARRAY UNIDIMENSIONAL
Para recorrer un array se utiliza una instrucción iterativa (normalmente una instrucción for, aunque también puede hacerse con while o do..while) utilizando una variable entera como índice que tomará valores desde el primer elemento al último o desde el último al primero.
Por ejemplo, el siguiente fragmento de programa Java declara un array de 7 elementos de tipo double y le asigna valores iniciales. A continuación recorre el array, utilizando la instrucción for, para mostrar por pantalla el contenido del array.
double[] notas = {2.3, 8.5, 3.2, 9.5, 4, 5.5, 7.0}; //array de 7 elementos
System.out.print(notas[i] + " "); //se muestra cada elemento del array
Para evitar errores de acceso al array es recomendable utilizar length para recorrer el array completo.
Ejemplo de recorrido de un array en java:
Programa que lee por teclado la nota de los alumnos de una clase y calcula la nota media del grupo. También muestra los alumnos con notas superiores a la media. El número de alumnos se lee por teclado.
Este programa crea un array de elementos de tipo double que contendrá las notas de los alumnos. El tamaño del array será el número de alumnos de la clase.
Se realizan 3 recorridos sobre el array, el primero para asignar a cada elemento las notas introducidas por teclado, el segundo para sumarlas y el tercero para mostrar los alumnos con notas superiores a la media.
public class Recorrido2 {
int numAlum, i;
double suma = 0, media;
System.out.print("Número de alumnos de la clase: ");
numAlum = sc.nextInt();
} while (numAlum <= 0);
double[] notas = new double[numAlum]; //se crea el array
// Entrada de datos. Se asigna a cada elemento del array
// la nota introducida por teclado
for (i = 0; i < notas.length; i++) {
System.out.print("Alumno " + (i + 1) + " Nota final: ");
notas[i] = sc.nextDouble();
// Sumar todas las notas
suma = suma + notas[i];
// Calcular la media
// 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: ");
if (notas[i] > media) {
System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]);
Recorrer un Array en java con foreach. Bucle for para colecciones
A partir de java 5 se incorpora una instrucción for mejorada para recorrer arrays y contenedores en general.
Permite acceder secuencialmente a cada elemento del array.
for(tipo nombreDeVariable : nombreArray){
tipo: indica el tipo de datos que contiene el array.
nombreDeVariable: variable a la que en cada iteración se le asigna el valor de cada elemento del array. Esta definida dentro del for por lo que solo es accesible dentro de él.
nombreArray: es el nombre del array que vamos a recorrer.
Mediante este bucle solo podemos acceder a los elementos del array. No podemos hacer modificaciones en su contenido.
Ejemplo: El siguiente programa crea un array temperatura de 10 elementos. Lee por teclado los valores y a continuación los muestra por pantalla.
public class Recorrerforeach1 {
double [] temperatura = new double[10];
for(i = 0; i<temperatura.length;i++){
System.out.print("Elemento " + i + ": ");
temperatura[i] = sc.nextDouble();
for(double t: temperatura){
esta muy bien.............
Anónimo 3 de diciembre de 2013, 4:50
Anónimo 3 de enero de 2014, 18:19
Magnifico XD!
Anónimo 22 de abril de 2016, 19:28
Anónimo 14 de abril de 2018, 16:34
Siento q bailo x primera vez
Bruxa 8 de enero de 2014, 12:34
José Antonio Ruiz 13 de abril de 2014, 11:46
Explicación excelente y ejemplo claro. Ánimo y sigue con esta labor.
Isaac Javier 28 de octubre de 2014, 23:51
Muy útil el foreach, era una sintaxis que no conocía.
Alejandro 20 de noviembre de 2014, 15:51
sos un chingon, gracias
Andres Arredondo Cifuentes 20 de junio de 2015, 18:52
buen dia alguien sabe como Crear un arreglo de 5 posiciones y llenarlo con un ciclo for por medio de la consola, luego mostrarlos en la misma
Anónimo 15 de julio de 2015, 11:35
Hola, tienes una web genial con muy buenas explicaciones y ejercicios, enhorabuena.
Decirte que he probado a modificar un valor en el foreach y sí que es posible (aunque no sea la mejor opción, está claro)
for (String dia: dias){
dia = System.currentTimeMillis() + "";
Anónimo 3 de abril de 2017, 16:40
LA VERDAD ES QUE SI ME GUSTA MUCHO TU CANAL ESPERO QUE YA SUBAS EL ESPECIAL MOSTRANDO TU CARA SOY SUB DESDE LOS 100 T LA RIFAS XDXD
Anónimo 14 de noviembre de 2015, 15:10
como declaro un vector de tipo real float solo impresion
Anónimo 6 de noviembre de 2016, 16:57
Necesito ayuda. Alguien sabría resolver este problema? Sería de gran ayuda que alguien copiara el código en la respuesta...
Crea un programa de gestión de un instituto. El programa solicitará el número de alumnos de un instituto, y a continuación las notas de cada uno. Como resultado nos mostrará la nota más alta, la más baja, la cantidad de alumnos que han aprobado , los que han suspendido, y la media de las notas del instituto.
Unknown 6 de noviembre de 2016, 23:20
int estudiantes = input("ingrese el numero de estudiantes ");
double notas=0;
double mayor=0;
double menor=10000000;
int alumnosAprobados=0;
double sumatoria=0;
for (int i=1;i<=estudiantes;i++){
notas=input ("ingrese la nota del estudiante numero " + i);
if(notas>mayor)
mayor=notas;
if(notas3){
estudiantesAprobados=estdiantesAprobados+1;
//no se que sean suspendidos pero se hace algo parecido a lo anterior
sumatoria = sumatoria+notas; //o tambien se utiliza (sumatoria +=notas)
media=sumatoria/estudiantes;
ya usted saque las salidas y acomodelo de acuerdo al lenguaje de programacion o la clase que importo en java
jho 6 de noviembre de 2016, 23:23
en notas3 es notas>3
PEXMENCAR diego 7 de febrero de 2017, 4:13
MUY bien el curso amigo me esta ayudando demasiado gracias estaría bien que los tuvieras en PDF jeje