Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Recorrido de Array

Estas en el tema de Recorrido de Array en el foro de Java en Foros del Web. Escribir un método al que se le pasan dos arrays de la misma longitud con cantidades enteras. El método retornará un ArrayList de strings conteniendo ...
  #1 (permalink)  
Antiguo 10/01/2015, 04:51
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 10 años, 2 meses
Puntos: 0
Recorrido de Array

Escribir un método al que se le pasan dos arrays de la misma longitud con cantidades enteras. El método retornará un ArrayList de strings conteniendo la suma de las cantidades enteras situadas en las casillas del mismo índice. Cada string será la concatenación de las dos cantidades del mismo índice y del resultado de su suma con el formato que se indica en este ejemplo. Por ejemplo, si los arrays de los que se parte son:
{1,4,5,2}
{3,5,7,6}
El ArrayList retornado contendrá los siguientes strings:
{"1+3=4", "4+5=9", "5+7=12", "2+6=8"}

La cabecera del método será:
public static ArrayList<String> componerLista(int[] a, int[] b)

Este es mi enunciado, yo he hecho esto:

Código Java:
Ver original
  1. public static ArrayList<String> componerLista(int[] a, int[] b)
  2.     {
  3.         ArrayList <String> listaSuma=new ArrayList<String>();
  4.         if (a.length==b.length)
  5.         {
  6.            
  7.             for (int i=0; i<=a.length; i++)
  8.             {
  9.                int valA=a[i];
  10.                int valB=b[i];
  11.                int suma=valA+valB;
  12.                
  13.                listaSuma.add(""+valA+"+"+valB+"="+suma+"");
  14.                
  15.                return listaSuma;
  16.             }
  17.            
  18.         }
  19.         return null;
  20.     }

Pero solo hago el recorrido si los dos Arrays a y b son iguales.
Queria saber dos cosas:

1.- Como hacerlo para arrays de distinta longitud, es decir poner un else si, pero entonces tengo la segunda duda

2.- En algun momento un array se acabará entonces mi variable valA (suponiedo que es el array a el mas pequeño) pasará a valer null? y siendo asi como pongo un for para que llegue solo hasta el array mas pequeño sin tener que calcularlo manualmente es decir, obtener las longitudes y hacer un if con los posibles casos a>b, a<b o a=b.

Gracias!
  #2 (permalink)  
Antiguo 10/01/2015, 09:29
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 4 meses
Puntos: 182
Respuesta: Recorrido de Array

Buenas,

La mejor manera de recorrer las colecciones en Java es mediante el bucle foreach, disponible desde Java 5.
Funciona incluso con arrays.

Código Java:
Ver original
  1. for (final Integer elementA : a) {
  2.     //Hacer cualquier cosa con cada elemento
  3. }

Esta estructura se expande en compilación en el uso de iterador (que era la forma de recorrer las colecciones en java 1.4 e inferior) y permite recorrer las listas sin tener que conocer sus longitudes.
http://docs.oracle.com/javase/8/docs...e/foreach.html

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 10/01/2015, 12:53
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 meses
Puntos: 260
Sonrisa Respuesta: Recorrido de Array

Hola,

Posiblemente,

Cita:
Iniciado por scuvi96 Ver Mensaje
...
1.- Como hacerlo para arrays de distinta longitud, es decir poner un else si, pero entonces tengo la segunda duda

2.- En algun momento un array se acabará entonces mi variable valA (suponiedo que es el array a el mas pequeño) pasará a valer null? y siendo asi como pongo un for para que llegue solo hasta el array mas pequeño sin tener que calcularlo manualmente es decir, obtener las longitudes y hacer un if con los posibles casos a>b, a<b o a=b. ...
En este caso el método usado normalmente es el while.

Código Java:
Ver original
  1. int i = 0;
  2. while (i < a.length && i < b.length) {
  3.   // se va a ejecutar solamente cuando
  4.   // i sea menor que la longitud de a y b
  5.   i++;
  6. }
  7.  
  8. int c = a.length - b.length;
  9.  
  10. if (c == 0) {
  11.   // a y b son iguales
  12. } else {
  13.   if (c > 0) {
  14.     // b es mas grande
  15.   } else {
  16.     // c < 0
  17.     // a es mas grande
  18.   }
  19. }

Cita:
Iniciado por Profesor_Falken Ver Mensaje
... permite recorrer las listas sin tener que conocer sus longitudes. ...
El problema es que quiere recorrer dos arrays paralelos.

Saludos,

Última edición por HackmanC; 10/01/2015 a las 13:04 Razón: simplificar

Etiquetas: arraylist, recorrido, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.