Problema al imprimir 2 vectores, con 2 bucles

Iniciado por Dem0ny, 2 Febrero 2009, 11:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Dem0ny

Tengo un problema con el siguiente codigo:

Código (java) [Seleccionar]
import java.util.*;
class Ejercicio2{
public static void main(String args[]){
   String [] nombres={"Pedro","Francisco","Roberto","Manuel","Vicente","Luis","Juli","Aaron","Carlos"};
   int [] puntuacion={10,3,2,6,2,3,4,5,2,3};
 
 
    for(int j=0;j<puntuacion.length;j++){
   
    for(int i=0; i<nombres.length;i++){
   
   
    System.out.println(" "+puntuacion[i]+ ""+nombres[j]);
   
    }
                      }
   
    }
}


El siguiente codigo quiero que ejecute, la correspodiente matriz unidimensional(vector) con cada uno de los nombres. Por ej. Pedro tendria la puntuación 10,  Francisco el 3, Roberto el 2, Manuel el 6... y que se impriman en dos columnas contiguas.


Me da fallo y el resultado del programa es una combinación de cada nombre con cada una de las puntuaciones. Tiene que ser algun fallo de concatenación de los dos bucles o algo por el estilo, pero que no soy capaz de dar con ello. Aver si alguno puede darme una orientación

Un saludo! Gracias de antemano

Rayden_3000

Es porque estas haciendo un bucle continuo con los vectores...

No saldrá del primer valor hasta que se cumpla con la segunda condición... de lo contrario no saldrá y no tomará el siguiente valor, hasta (valga la redundancia) salga nuevamente...

Lo que tendrías que hacer es hacer un bucle y dentro de el imprimir los valores...

Saludos

Dem0ny

Entonces como sería, un bucle para cada vector?.

Aver, yo entiendo los 2 bucles tipo array bidimensional, va leyendo y le va asignando ... ej. posición 1, con posición 1 etc...

Por tanto sería hacer un bucle imprimiendo los nombres y otro imprimiendo puntuaciones?

El objetivo seria

Pedro 10
Francisco 3
Roberto 2
Manuel 6
Vicente 2
Luis 3
Juli 4
...
Aaron

Hearts

Tu array de puntuaciones es más grande que tu array de nombres, y deben ser iguales.

Dem0ny

#4
A pesar de ese error me sale cada una de las puntuaciones con todos los users.

Ej.

Pedro 10
Francisco 10
Roberto 10
Manuel 10
Vicente 10
Luis 10
Juli 10

.....

y luego con otra puntuacion,... asi



edito: El objetivo es sakarlos para lelamente como ahora y que cada puntuacion y usuario sea única, es decir para cada usuario su puntuacion.

Saludos!

Hearts

Y es correcto, deberías hacer los dos bucles por separado por ejemplo.

Verás, lo que estás haciendo si te fijas, es que para cada j(primer bucle, nombre) le asignas todas las i(segundo bucle, puntuaciones).

Dem0ny

Pero al separar, en 2 bucles los 2 printf saldra las puntuaciones y despues abajo los nombres, todo dato por linea... quiero dejarlos unidos,

USUARIO PUNTUACIÓN

no...

User 1
User 2
User 3

Puntuación1
Puntuación2
Puntuación 3

Así quedaría separados los 2 bucles... con un print en cada uno...

Dem0ny

#7
SOLUCIONADO:

Código (java) [Seleccionar]
import java.util.*;
class Ejercicio2{
public static void main(String args[]){
   String [] nombres={"Pedro","Francisco","Roberto","Manuel","Vicente","Luis","Juli","Aaron","Carlos","binladen"};
   int [] puntuacion={10,3,2,6,2,3,4,5,2,3};


    for(int j=0;j<puntuacion.length;j++){

    System.out.println(" "+puntuacion[j]+ ""+nombres[j]);

   
                      }

    }
}

alki

De todos modos si quisieses usar dos iteradores aunque en este caso no tiene sentido. Lo podrias haber hecho del siguiente modo:

Código (java) [Seleccionar]
import java.util.*;
class Ejercicio2{
public static void main(String args[]){
   String [] nombres={"Pedro","Francisco","Roberto","Manuel","Vicente","Luis","Juli","Aaron","Carlos"};
   int [] puntuacion={10,3,2,6,2,3,4,5,2,3};


    for(int j=0, int i=0;j<puntuacion.length && i<nombres.length;j++, i++){

    System.out.println(" "+puntuacion[i]+ ""+nombres[j]);

                      }

    }
}


Un Saludo

KaOs_NiGhT

for(int j=0;j<puntuacion.length;j++){
     for(int i=0; i<nombres.length;i++){
           System.out.print(" "+puntuacion+ ""+nombres[j]);   
     }
     System.out.println(" ");
}
//es algo asi, para imprimir con dos bucles  ;)