Tengo un problema con el siguiente codigo:
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
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
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
Tu array de puntuaciones es más grande que tu array de nombres, y deben ser iguales.
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!
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).
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...
SOLUCIONADO:
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]);
}
}
}
De todos modos si quisieses usar dos iteradores aunque en este caso no tiene sentido. Lo podrias haber hecho del siguiente modo:
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
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 ;)
Estas equivocado, ya que en ese caso te imprimiria algo así:
- [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro [I@3e25a5Pedro
[I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco [I@3e25a5Francisco
[I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto [I@3e25a5Roberto
[I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel [I@3e25a5Manuel
[I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente [I@3e25a5Vicente
[I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis [I@3e25a5Luis
[I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli [I@3e25a5Juli
[I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron [I@3e25a5Aaron
[I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos [I@3e25a5Carlos
- Porque fuera de que estas usando dos bucles repetiria cada nombre tantas veces como indique la longitud de puntuacion, ademas fijate que le estas dando es puntuacion y no le pones un indice que referencie al dato del arreglo que quieres imprimir, por esta razon te imprime esos numeros raros, que seria algo como la dir de memoria o que se yo donde se encuentra el arreglo puntuacion (no se si es esto o significa otra cosa :rolleyes:).
Fijate bien que la solucion ya la han puesto con anterioridad ;) si se quisiera usar dos bucles (que no es necesario).
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]);
}
}
}
Y la mejor es:
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]);
}
}
}
Salu2
AmeRiK@nO