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.
Por ejemplo, supongamos que queremos
guardar las notas de los 20 alumnos de una clase.
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
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
Podemos representar gráficamente el
array de notas de la siguiente forma:
Array notas:
8.50
|
6.35
|
5.75
|
8.50
|
· · ·
|
3.75
|
6.00
|
7.40
|
notas[0]
|
notas[1]
|
notas[2]
|
notas[3]
|
· · ·
|
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:
-
Declaración
-
Instanciación
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.
Por
ejemplo:
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. Esto quiere decir que el nombre del array contiene la dirección de memoria donde se encuentra.
De
forma general un array se instancia así:
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.
Por
ejemplo:
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:
Scanner sc = new Scanner(System.in);
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 el nombre
del array y el contenido del array.
Cuando por ejemplo se ejecuta una instrucción para crear un array de enteros llamado A:
int [] A = new int [5];
se realizan dos operaciones: primero se crea un bloque de memoria donde almacenar el array de 5 enteros y después se asigna la dirección de inicio del bloque de memoria, también llamado referencia del array, a la variable A.
El nombre del array contiene la dirección de inicio del bloque de memoria donde se encuentra el contenido del array.
2.
INICIALIZAR ARRAYS UNIDIMENSIONALES
Un array es un objeto, por lo tanto, cuando se crea, a
sus elementos se les asigna automáticamente un valor inicial:
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.
También podemos dar
otros valores iniciales al array cuando se crea.
Los valores iniciales de un array se
escriben entre llaves separados por comas.
Los valores iniciales de un array 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.
Por ejemplo:
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.
Ejemplos:
//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
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.
Se puede utilizar como índice un valor entero, una
variable de tipo entero o una expresión de tipo entero.
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.
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).
Por ejemplo:
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, introducimos por teclado un valor y la posición del array donde lo vamos a guardar:
Scanner sc = new Scanner(System.in);
int i, valor;
int [] a = new int[10];
System.out.print("Posición: ");
i = sc.nextInt(); //pedimos una posición del array
if (i >= 0 && i < a.length) { //si la posición introducida está dentro de los límites del array
System.out.print("Valor: ");
valor = sc.nextInt(); //pedimos el valor
a[i] = valor;
}else{
System.out.println("Posición no válida");
}
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
for (int i = 0; i < 7; i++) {
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.
Por ejemplo:
double[] notas = {2.3, 8.5, 3.2, 9.5, 4, 5.5, 7.0}; //array de 7 elementos
for (int i = 0; i < notas.length; i++) {
System.out.print(notas[i] + " "); //se muestra cada elemento del array
}
Ejemplo
de recorrido de un array unidimensional 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.
import java.util.Scanner;
public class Recorrido2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numAlum, i;
double suma = 0, media;
do {
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
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]);
}
}
}
}
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.
La sintaxis general es:
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 usando un bucle foreach.
import java.util.Scanner;
public class Recorrerforeach1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double [] temperatura = new double[10];
int i;
for(i = 0; i < temperatura.length; i++){
System.out.print("Elemento " + i + ": ");
temperatura[i] = sc.nextDouble();
}
for(double t: temperatura){
System.out.print(t + " ");
}
System.out.println();
}
}
esta muy bien.............
ResponderEliminarperfecto ;)
ResponderEliminarMagnifico XD!
ResponderEliminarsorprendentemente
EliminarSiento q bailo x primera vez
EliminarMuchas gracias
EliminarMuy bueno
ResponderEliminarExplicación excelente y ejemplo claro. Ánimo y sigue con esta labor.
ResponderEliminarMuy útil el foreach, era una sintaxis que no conocía.
ResponderEliminarsos un chingon, gracias
ResponderEliminarbuen 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
ResponderEliminarHola, tienes una web genial con muy buenas explicaciones y ejercicios, enhorabuena.
ResponderEliminarDecirte que he probado a modificar un valor en el foreach y sí que es posible (aunque no sea la mejor opción, está claro)
String [] dias = {"Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"};
for (String dia: dias){
dia = System.currentTimeMillis() + "";
System.out.println(dia);
Thread.sleep(1000);
}
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
Eliminarcomo declaro un vector de tipo real float solo impresion
ResponderEliminarMuy buenas!
ResponderEliminarNecesito 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.
int estudiantes = input("ingrese el numero de estudiantes ");
Eliminardouble notas=0;
double mayor=0;
double menor=10000000;
int alumnosAprobados=0;
double sumatoria=0;
double media=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
en notas3 es notas>3
EliminarMUY bien el curso amigo me esta ayudando demasiado gracias estaría bien que los tuvieras en PDF jeje
ResponderEliminarmuy buenas, alguien me podría ayudar en este programa por favor.
ResponderEliminarelabore un programa que solicite al usuario N números enteros. almacene estos datos, en un arreglo unidimensional de 10 elementos. luego, en un segundo arreglo unidimensional de 10 elementos, ingrese el cuadrado de cada elemento correspondiente al primero, e imprima ambos arreglos.....
lo agradecería mucho...
Una duda entrenado a la perfección tu código supongo que solo es para guardar lo que introduzca el usuario al arreglo en las posiciones que está tenga pero lo replique y me pone error en el scaner.aunque no entiendo porque
ResponderEliminarPuedes poner el mensaje de error de Scanner? Es posible que no hayas realizado el import...
EliminarMuchas gracias por esta ayuda, me ha servido para solucionar un problema con la plantilla de mi blog.
ResponderEliminaralguien me podria ayudar a realizar un programa que declare un "array" con los valores RGB de los siguientes colores:
ResponderEliminarcolor rojo, valor ff0000
color verde, valor 00ff00
color azul, valor 0000ff
color blanco, valor ffffff
color negro, valor 000000
amarillo, #FFFF00
(opcional puedes declarar más colores)
A continuación, el programa preguntará al usuario qué color desea conocer su valor RGB.
El usuario contestará con la palabra (o con la letra inicial) del color elegido y el programa mostrará su valor RGB.
Obligatorio, si el usuario contesta t o todos, el programa recorrerá todo el arreglo y lo mostrará completo al usuario.
buenas noches alguien me puede ayudar realizar un algoritmo
ResponderEliminarque lea las asignaturas matemáticas, lengua y ciencias naturales.
que permita
// ingresar las calificaciones de la prueba para cada estudiante en cada una de las asignaturas.
//Presentar en pantalla una representación de la matriz con las notas de los estudiantes en cada asignatura.
//Identificar cuál estudiante tiene mejor promedio de las asignaturas.
//Identificar cuál es la asignatura que presenta mejor promedio.
Alguien me podria ayudar a realizar este?
ResponderEliminar● Arreglo de 10 posiciones para guardar nombres de productos.
● Arreglo de 10 posiciones para guardar precios de productos.
● Mostrar un mensaje avisando que se desplegarán los nombres de los productos.
● Desplegar el arreglo donde se guardan los nombres de los productos.
● Mostrar un mensaje avisando que se desplegarán los precios de los productos.
● Desplegar el arreglo donde se guardan los precios de los productos.
Buenas, te dejo una solución a tu problema. No sé si es lo que necesitas. Saludos!!!
Eliminarpublic static void main(String[] args) {
String[] nombreProductos = new String[10]; //Array donde se guardarán los nombres de los productos
double[] precioProductos = new double[10]; //Array donde se guardarán los precios de los productos
//Se completa el array de los nombres de los productos
nombreProductos[0] = "Harina";
nombreProductos[1] = "Fideos";
nombreProductos[2] = "Agua Mineral";
nombreProductos[3] = "Manteca";
nombreProductos[4] = "Aceite";
nombreProductos[5] = "Queso";
nombreProductos[6] = "Leche";
nombreProductos[7] = "Jugo";
nombreProductos[8] = "Arroz";
nombreProductos[9] = "Atún";
//Completar el array de los precios de los productos
precioProductos[0] = 2.5;
precioProductos[1] = 1.55;
precioProductos[2] = 0.95;
precioProductos[3] = 1.7;
precioProductos[4] = 3.25;
precioProductos[5] = 4.35;
precioProductos[6] = 1.05;
precioProductos[7] = 0.4;
precioProductos[8] = 0.95;
precioProductos[9] = 3.15;
//Mostrar por consola un mensaje avisando que se mostrará la lista de los nombres de los productos
System.out.println("Los productos almacenados son:");
//Mostrar por consola los nombres de los productos
for(int i = 0 ; i < nombreProductos.length ; i++) {
System.out.println((i + 1) + "- " + nombreProductos[i]);
}
//Mensaje vacío para dejar un espacio
System.out.println();
//Mostrar por consola un mensaje avisando que se mostrará la lista de los precios de los productos
System.out.println("Los precios de los productos son:");
//Mostrar por consola los precios de los productos
for(int i = 0 ; i < precioProductos.length ; i++) {
System.out.prinln((i + 1) + "- " + nombreProductos[i] + ": " + precioProductos[i]);
}
}
Holaaa, aqui les muestro el que hice, ingresando el tamaño de la cadena, ademas de ingresar los valores en la cadena para culminar mostrandolos
ResponderEliminarpublic static void main(String []Arg){
Scanner leer = new Scanner (System.in);
int cont = 0 , longitud ;
System.out.println("Bievenido al Programa");
System.out.println("Ingrese el tamaño de la cadena:");
longitud = leer.nextInt();
int cadena [] = new int [longitud];
for( ; cont < cadena.length ; cont += 1){
System.out.println("Ingrese un numero entero:");
cadena [cont] = leer.nextInt();
}
cont = cont - cont;
System.out.println("el tamaño de la cadena es: "+cadena.length);
do{
System.out.print(cadena[cont]+" - ");
cont += 1;
}while(cont < cadena.length);
System.out.println("Fin del programa");
}
alguien me podria ayudar con este por favor: escribe una aplicacion que reciba como entrada cinco numeros, cada uno debe estar entre 10 y 100, inclusive. A medida que se lea cada numero, muestrelo solamente si no es duplicado de un numero que ya se haya leido. preparese para el "peor caso", en el que los cinco numeros son diferentes. muestre el conjunto completo de valores unicos introducidos, despues de que el usuario ingrese cada valor.
ResponderEliminarcargar N números en un arreglo unidimensional, y N números en un segundo arreglo bidimensional y llevar la multiplicación entre ellos a un tercer arreglo unidimensional de tal manera que se multipliquen por orden de posiciones, él dato que está en la primera posición del primer arreglo unidimensional se multiplica con la primera posición del segundo arreglo unidimensional y su resultado se lleva a la primera posición del tercer arreglo unidimensional
ResponderEliminar