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

Va de HashMap como obtener un dato??

Estas en el tema de Va de HashMap como obtener un dato?? en el foro de Java en Foros del Web. Bueno chicos necesito una mano. Les pongo en situacion: Tengo objetos examen, los cuales tienen como atributo un ArrayList de objetos pregunta, y a su ...
  #1 (permalink)  
Antiguo 26/12/2012, 05:04
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 7 años, 1 mes
Puntos: 0
Va de HashMap como obtener un dato??

Bueno chicos necesito una mano. Les pongo en situacion:

Tengo objetos examen, los cuales tienen como atributo un ArrayList de objetos pregunta, y a su vez estos objetos pregunta tienen como atributo un ArrayList de string.

Estos objetos examen los almaceno en un HashMap con una key que yo le asigno.
El tema de la cuestion es como recuperar tooooda la informacion de esos objetos examen y de sus sucesivas ArrayList. Lo que tengo es esto:
Código:
case 6: //Buscar examen
				
				System.out.println("Ha seleccionado Buscar Examen.");
				System.out.println("Introduzca el id del examen: ");
				int id_busca = Integer.parseInt(stdin.readLine());
				System.out.println(p.examenes.get(id_busca).toString());
				System.out.println(" ¿Desea eliminarlo? s/n");
				String decision_ex = stdin.readLine();
				if(decision_ex.equals("s")){
					p.examenes.remove(id_busca);
					System.out.println("Examen eliminado");
					
				}
				break;
Hasta aqui bien, se que la clave esta en el metodo .toString(), a continuacion os pongo el metodo toString() de la clase examen:
Código:
public String toString(){
		String pregunta=null;
		String lines = null;
		lines="La convocatoria es: "+getConvocatoria()+"   Materia: "+getMateria()+"      Id del examen: "+getIdExamen()+"\n\n\r";
		for (Pregunta p : preguntas) {
			pregunta= "\n\r" + p.getTextoPrg()+"\n\r"+p.getRespuesta()+"\n\r";
					
		}
		return lines+" "+pregunta;

		
	}
ahora bien, los atributos normales de examen me los devuelve bien, pero , en el for solo me devuelve la ultima pregunta añadida. ¿alguna idea? si necesitais mas codigo decidlo y se pone.
  #2 (permalink)  
Antiguo 26/12/2012, 18:37
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 7 años, 1 mes
Puntos: 0
Respuesta: Va de HashMap como obtener un dato??

ni idea??? esque me jode un monton se que es una minucia lo que me falta y con eso termino mi practica para ponerme con el entorno grafico....
  #3 (permalink)  
Antiguo 26/12/2012, 19:29
Avatar de iblancasa  
Fecha de Ingreso: diciembre-2012
Ubicación: España
Mensajes: 143
Antigüedad: 7 años, 1 mes
Puntos: 16
Respuesta: Va de HashMap como obtener un dato??

El problema creo que está en que no estás añadiendo bien las preguntas a cada examen... sólo añades la última. Haz que te muestre por pantalla el tamaño del ArrayList de preguntas y comprueba que sea correcto.
Un saludo.
  #4 (permalink)  
Antiguo 27/12/2012, 05:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 7 años, 1 mes
Puntos: 0
Respuesta: Va de HashMap como obtener un dato??

Las preguntas si se añaden bien a cada examen lo e comprobado con preguntas.size() despues de crear un examen y estan en el ArrayList preo no las muestra estoy seguro de que el problema esta el toString();
  #5 (permalink)  
Antiguo 27/12/2012, 06:30
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.512
Antigüedad: 11 años, 4 meses
Puntos: 188
Respuesta: Va de HashMap como obtener un dato??

for (Pregunta p : preguntas) {
pregunta= "\n\r" + p.getTextoPrg()+"\n\r"+p.getRespuesta()+"\n\r";

}

Evidentemente la variable pregunta se va seteando cada vez q iteras, acabando siempre el valor de la ultima pregunta. Personalmente haría lo siguiente:

public String toString(){
String pregunta="";
String lines = null;
lines="La convocatoria es: "+getConvocatoria()+" Materia: "+getMateria()+" Id del examen: "+getIdExamen()+"\n\n\r"; // Aqui paso de poner los concats pero puedes copiar la misma estructura que para "pregunta"
for (Pregunta p : preguntas) {
pregunta = pregunta.concat(p.getTextoPrg()).concat("\n\r").co ncat(p.getRespuesta()).concat("\n\r");

}
return lines+" "+pregunta;


}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 27/12/2012, 10:17
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 7 años, 1 mes
Puntos: 0
Respuesta: Va de HashMap como obtener un dato??

Fuzzylog era eso mil gracias me estaba volviendo loco buscando esa tonteria con poner : pregunta += "\n\r" + p.getTextoPrg()+"\n\r"+p.getRespuesta()+"\n\r";

con poner esa tonteria de + delante del igual funciona no me di cuenta jeje

Por cierto una pregunta que no va con el tema pero bueno:

cuando creo un archivo .txt con ese return lines+" "+pregunta; como hago los saltos de linea? porque con ese \n\r no me los hace en el archivo.
  #7 (permalink)  
Antiguo 28/12/2012, 04:56
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.512
Antigüedad: 11 años, 4 meses
Puntos: 188
Respuesta: Va de HashMap como obtener un dato??

lo que te he puesto del concat es para evitar usar el += por cuestiones de rendimiento, pero no funciona si el valor original de pregunta es null, por eso lo cambié a "".

En cuanto a tu otra pregunta depende de como lo hagas (mira ejemplos)

http://todoelmed.blogspot.com.es/201...cheros-en.html

Otra opción sería usar un PrintStream que ya tiene el método println que te escribe textos en líneas separadas.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: clase, hashmap, 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 17:55.