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

Novato en java

Estas en el tema de Novato en java en el foro de Java en Foros del Web. Buenas ando tratando de averiguar como pasar este programa con el interfaz de java Colection pero no encuentro nada que me muestre un ejemplo de ...
  #1 (permalink)  
Antiguo 23/02/2010, 07:51
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Novato en java

Buenas ando tratando de averiguar como pasar este programa con el interfaz de java Colection pero no encuentro nada que me muestre un ejemplo de como trabajar con ello. Gracias de antemano por la ayuda prestada

import java.util.*;
public class MedicalVisit{
public static void main( String[] args ){
List<Integer> visitas = new ArrayList<Integer>();
String [] sDias = {"Lunes","Martes","Miercoles","Jueves","Viernes "};
visitas = visitsToWeekList(args);
for(int i = 0; i < visitas.size();i++){
System.out.println(sDias[i]+" : "+visitas.get(i));
}
System.out.println("El dia con mas visitas es: "+sDias[getMaxPosition(visitas)]);
System.out.println("Media de visitas: "+getAverage(visitas));

}
public static List <Integer> visitsToWeekList(String[] nVisitas){
String ndias = nVisitas[0];
String[] nDias = ndias.split(",");
List<Integer> domo = new ArrayList<Integer>();
for(int i = 0 ;i < nDias.length; i++){
domo.add(Integer.valueOf(nDias[i]));
}
return domo;

}
public static int getMaxPosition(List<Integer> weekList){
int maxPos = 0;
for(int i = 1; i < weekList.size();i++){
if(weekList.get(maxPos) < weekList.get(i)){

maxPos = i;

}


}
return maxPos;


}
public static int getAverage(List<Integer> weekList){
int suma = 0;
Iterator it = weekList.iterator();
while (it.hasNext()){

suma = suma + (Integer) it.next();

}

return suma/weekList.size();

}


}
  #2 (permalink)  
Antiguo 23/02/2010, 09:25
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Si usas J2EE busca la api correcta, yo te indico donde está para J2SE

http://java.sun.com/j2se/1.5.0/docs/...ollection.html

Como ya importas java.util*; en un principio ya tienes las collections importadas

Así que tienes que definir una new Collection<tipoDato>.

Para iterar una colección tienes aquí ejemplos: http://leepoint.net/notes-java/data/...iterators.html

Si quieres iterar un array para introducir sus componentes en la collection se usa el bucle for clásico...

Suerte

Ah y trata de no poner post con el mismo título, busca un título que la gente entienda de qué va el problema. Si no parecen posts repetidos.
  #3 (permalink)  
Antiguo 23/02/2010, 12:33
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Novato en java

Buenas FuzzyLog, gracias de nuevo por contestar tan rápidamente y aclararme las cosas, voy a recapitular. Es decir para una collection se crea asi:
collection <tipo objeto> nombrevariable = new collection <tipo objeto>

Si se quiere rellenar la collection se hace con un for de toda la vida teniendo en cuenta que se cargan con objetos y para recorrer la collection, no puedes usar el
método get() y un for si no que se hace a traves de la clase iterator. si me he enterado más o menos creo que es esto no?
Cita:
Iniciado por Fuzzylog Ver Mensaje
Si usas J2EE busca la api correcta, yo te indico donde está para J2SE

http://java.sun.com/j2se/1.5.0/docs/...ollection.html

Como ya importas java.util*; en un principio ya tienes las collections importadas

Así que tienes que definir una new Collection<tipoDato>.

Para iterar una colección tienes aquí ejemplos: http://leepoint.net/notes-java/data/...iterators.html

Si quieres iterar un array para introducir sus componentes en la collection se usa el bucle for clásico...

Suerte

Ah y trata de no poner post con el mismo título, busca un título que la gente entienda de qué va el problema. Si no parecen posts repetidos.
  #4 (permalink)  
Antiguo 24/02/2010, 03:45
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Personalmente las colecciones las crearia así

Collection miColeccion = new Collection<tipoDato>;
  #5 (permalink)  
Antiguo 24/02/2010, 04:05
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Novato en java

Hola de nuevo FuzzyLog, debo de ser un torpón porque no doy con lo que quiero hacer...
Vamos a ver cuando lo pongo asi me dice esto:
java.util.Collection is abstract; cannot be instantiated Collection domo = new Collection <Integer>();

public static Collection <Integer> visitsToWeekList(String[] nVisitas){
String ndias = nVisitas[0];
String[] nDias = ndias.split(",");
Collection domo = new Collection <Integer>();
for(int i = 0 ;i < nDias.length; i++){
domo.add(Integer.valueOf(nDias[i]));
}
return domo;

Cuando lo pongo como asi , me dice esto:
MedicalVisit2.java:23: variable domo might not have been initialized
domo.add(Integer.valueOf(nDias[i]));
^
MedicalVisit2.java:25: variable domo might not have been initialized
return domo;


public static Collection<Integer> visitsToWeekList(String[] nVisitas){
String ndias = nVisitas[0];
String[] nDias = ndias.split(",");
Collection <Integer> domo;
for(int i = 0 ;i < nDias.length; i++){
domo.add(Integer.valueOf(nDias[i]));
}
return domo;

}

No se que será.
Saludos.
  #6 (permalink)  
Antiguo 24/02/2010, 06:15
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Prueba con Collection domo = new Collection();
Collection <Integer> domo = new Collection <Integer>();
o Collection domo = new ArrayList();

Yo usaría esta última, sin especificar el tipo de dato, luego solo tienes que asegurarte que lo que le metes son integers, o Strings que puedan ser parseados a integer, lo que dota al código de una mayor flexibilidad.
  #7 (permalink)  
Antiguo 24/02/2010, 07:03
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Novato en java

Hola de nuevo Fuzzylog.

He hecho lo que me has dicho y ahora no me da error pero no me devuelve nada la función por lo que no me muestran nada los otros dos métodos y el de obtener la media me devuelve error porque no recibe nada.

import java.util.*;
public class MedicalVisit2{
public static void main( String[] args ){
Collection <Integer> visitas = new ArrayList <Integer>(); ;//Creamos la collection
String [] sDias = {"Lunes","Martes","Miercoles","Jueves","Viernes "};//Creamos el array con los dias
visitas = visitsToWeekList(args);//Llamamos al método que convierte de un array de Strings a una collection
int i = 0;//Creamos una variable del tipo int como indice del array que contiene los días de la semana.
for(Iterator ivisitas = visitas.iterator(); ivisitas.hasNext();){//Creamos el iterador necesario para recorrer la Collection
System.out.println(sDias[i]+" : "+ivisitas.next());//mostramos los días de la semana y su correspondiente numero de visitas contenido en la collection
i++;//incrementamos la variable del array de los dias de la semana para que se recorra de forma consecutiva a la collection .
}
System.out.println("El dia con mas visitas es: "+sDias[getMaxPosition(visitas)]);//Mostramos el día con más visitas
//System.out.println("Media de visitas: "+getAverage(visitas));

}
public static Collection <Integer> visitsToWeekList(String[] nVisitas){
String ndias = nVisitas[0];//pasamos el contenido de la posición 0 del array que caputra los parametros de entrada a un objeto de tipo String
String[] nDias = ndias.split(",");//Llamamos al metodo split del objeto ndias y nos devuelve un array con los datos de las visitas sin ",".
//List <Integer> domo = new ArrayList <Integer>();
Collection <Integer> domo = new ArrayList <Integer>();
int i = 0;
for(Iterator idomo = domo.iterator();idomo.hasNext();){
domo.add(Integer.valueOf(nDias[i]));
i++;
}
/**for(int i = 0 ;i < nDias.length; i++){
domo.add(Integer.valueOf(nDias[i]));
}*/
return domo;

}
public static int getMaxPosition(Collection <Integer> weekList){
int maxPos = 0;
List <Integer> c = new ArrayList <Integer> (weekList);
for(int i = 1; i < c.size();i++){
if(c.get(maxPos) < c.get(i)){
maxPos = i;

}


}
return maxPos;


}
public static int getAverage(Collection<Integer> weekList){
int suma = 0;
Iterator it = weekList.iterator();
while (it.hasNext()){

suma = suma + (Integer) it.next();

}

return suma/weekList.size();

}


}
  #8 (permalink)  
Antiguo 24/02/2010, 07:19
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Lo siento, pero si no le pasas el String[] con nvisitas no consigues nada... Por lo visto esos strings se tienen q parsear a int asi q mete numeros tipo "24" ...
  #9 (permalink)  
Antiguo 24/02/2010, 10:08
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Novato en java

Buenas Fuzzylog, no entiendo lo que me quieres decir.
Primero convierto el array de Strings nVisitas a un String luego le aplico el split para que me cree un array de strings sin la coma y se lo paso como Integer recorriendo el array
Cita:
Iniciado por Fuzzylog Ver Mensaje
Lo siento, pero si no le pasas el String[] con nvisitas no consigues nada... Por lo visto esos strings se tienen q parsear a int asi q mete numeros tipo "24" ...
  #10 (permalink)  
Antiguo 24/02/2010, 10:54
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Y con que datos te viene inicializado el array de Strings nVisitas??????
  #11 (permalink)  
Antiguo 24/02/2010, 11:00
 
Fecha de Ingreso: junio-2007
Mensajes: 53
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Novato en java

Hola Fuzzylog, pues hazte a la idea que cuando le llamo hago asi:
java MedicalVisit 1,2,3,4,5
Cita:
Iniciado por Fuzzylog Ver Mensaje
Y con que datos te viene inicializado el array de Strings nVisitas??????
  #12 (permalink)  
Antiguo 25/02/2010, 02:29
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Novato en java

Bueno :D estás seguro que lo que le estás metiendo al ejecutarlo es un array de argumentos tipo String??? (u otra cosa?).

array de int -> 1,2,3,4,5
array de strings -> "1","2","3","4","5"

De todos modos te recomiendo que desarrolles con IDEs tipo eclipse. Es mucho más cómodo.

Etiquetas: Ninguno
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 20:23.