Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: dferna en 06 de Abril 2017, 14:31
-
Buenas :D
Aquí dejo la resolución al ejercicio CU00675B del manual básico de programación Java con BlueJ sobre copiar el contenido de un array a un ArrayList
package aplicacion;
import java.util.ArrayList;
public class TestArray {
public static void main(String[] args) {
int[] miArray1 = { 2, -4, 3, -7 };
ArrayList<Integer> lista1 = new ArrayList<Integer>();
System.out.println("Contenido de miArray1(array): ");
for (int i = 0; i < miArray1.length; i++) {
System.out.println("miArray1[" + i + "]= " + miArray1[i] + ";");
}
// La única forma de hacerlo es ir recorriendo el array e ir añadiendo
// el valor de cada posicion a la lista de tipo ArrayList
for (int i = 0; i < miArray1.length; i++) {
lista1.add(miArray1[i]);
}
System.out.println("Resultado tras convertir array en ArrayList");
System.out.println("Contenido de lista1(ArrayList): ");
//Recorro la lista de tipo ArrayList e imprimo el valor de cada posición
int contador = 0;
for (Integer posicion : lista1) {
System.out.println("lista1 "+contador+"= " + posicion+ ";");
contador++;
}
}
}
Aquí dejo también una prueba de funcionamiento:
Contenido de miArray1(array):
miArray1[0]= 2;
miArray1[1]= -4;
miArray1[2]= 3;
miArray1[3]= -7;
Resultado tras convertir array en ArrayList
Contenido de lista1(ArrayList):
lista1 0= 2;
lista1 1= -4;
lista1 2= 3;
lista1 3= -7;
-
Buenas dferna.
El código está bien, por ahorrar algo de código, el primer for lo podrías haber aprovechado para ir insertando los valores del ArrayList.
Te faltaría responder a las dos preguntas que contiene el enunciado.
Saludos. ;D
-
Hola pedro ;)
Gracias por corregirlo, le he realizado los cambios que me as comentado y la pregunta olvide responderlas ::) jeje.
Este es el código corregido:
package aplicacion;
import java.util.ArrayList;
public class TestArray {
public static void main(String[] args) {
int[] miArray1 = { 2, -4, 3, -7 };
ArrayList<Integer> lista1 = new ArrayList<Integer>();
System.out.println("Contenido de miArray1(array): ");
for (int i = 0; i < miArray1.length; i++) {
System.out.println("miArray1[" + i + "]= " + miArray1[i] + ";");
lista1.add(miArray1);
}
System.out.println("Resultado tras convertir array en ArrayList");
System.out.println("Contenido de lista1(ArrayList): ");
//Recorro la lista de tipo ArrayList e imprimo el valor de cada posición
int contador = 0;
for (Integer posicion : lista1) {
System.out.println("lista1 "+contador+"= " + posicion+ ";");
contador++;
}
}
}
¿Que tipo de datos almacena el array? ¿Qué tipo de datos almacena el ArrayList?El array contiene cuatro datos de tipo primitivo int.
El ArrayList contiene objetos de tipo Array con los datos que contiene el array de tipo primitivo int.
Saludos 8)
-
El código no compila, sale el siguiente error:
error:
cannot find symbol
lista1.add(miArray1);
symbol: method add(int[])
location: variable lista1 of type int[]
1 error
-------------------------------------------------------------------------------
error: no suitable method found for add(int[])
lista1.add(miArray1);
method ArrayList.add(int,Integer) is not applicable
(actual and formal argument lists differ in length)
method ArrayList.add(Integer) is not applicable
(actual argument int[] cannot be converted to Integer by method invocation conversion)
method AbstractList.add(int,Integer) is not applicable
(actual and formal argument lists differ in length)
method AbstractList.add(Integer) is not applicable
(actual argument int[] cannot be converted to Integer by method invocation conversion)
method AbstractCollection.add(Integer) is not applicable
(actual argument int[] cannot be converted to Integer by method invocation conversion)
1 error
------------------------------------------------------------------------------------
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.util.ArrayList.add
at TestArray.main(TestArray.java:29)
Java Result: 1
-
Buenas.
Esta línea:
lista1.add(miArray1);
debe de ir así:
lista1.add(miArray1[i]);
La respuestas que diste, dferna, son correctas.
Saludos. ;D