Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Suma size() con un for

Tengo la siguiente duda que me esta volviendo loco

Tengo una lista correspondiente con el numero de entradas para una sesión determinada de cine, únicamente quiero mostrar el total de entradas vendidas para las diferentes sesiones (tengo dos tipos de sesión, una con entradas normales y otra con entradas para el día del espectador).

adjunto fragmento de código

for(Sesion s: sesiones){
s.TotalEntradas();
}

con el for recorro todas las sesiones y mediante el método TotalEntradas();
me devuelve el size de las mismas.

public int TotalEntradas(){
return entradas.size();
}

el problema es que me muestra el total de entradas de la siguiente manera:

Entradas Normales: 11
Entradas Normales: 2

me gustaría que pusiera Entradas Normales 13, la suma de las entradas de las dos sesiones

he probado metiendo dentro del for:

cantidadEntradasNormales=cantidadEntradasNormales+(s.TotalEntradas());

para que me lo incremente, pero no funciona, puesto que me da las entradas que tiene cada sesión por separado

julio 1, 2015 | Unregistered CommenterJuan

Hola juan, te falta poner un poco más de código para entender mejor tu problema,
como por ejemplo donde mandas a imprimir " Entradas Normales: 11".
Suponiendo que se trata de una aplicación de consola, bueno
pero independiente de que si es una aplicación de consola esto debería valerte.
int cantidadEntradasNormales=0;
for(Sesion s: sesiones){
cantidadEntradasNormales=cantidadEntradasNormales+(s.TotalEntradas());
}
System.out.println("Entradas Normales: "+cantidadEntradasNormales);

pd: imagino que mandas a imprimir en el for por el resultado de tu respuesta, aunque solo estoy adivinando a falta de ver el codigo completo

julio 2, 2015 | Registered Commenterjhosep

Hola que tal, muchas gracias por contestar, adjunto el código completo.

De esta manera sigue imprimiendo las entradas:

Esto es lo que me imprime

Entradas dia espectador: 6.0
Entradas normales: 11.0
Entradas normales: 2.0


Esto es lo que quiero que me imprima


Entradas dia espectador: 6.0
Entradas normales: 13.0 ------------------que me sume las entradas normales---------------------

------------------------------------------Este es el código de la clase sala, que es la que contien las sesiones

public void recorrerSesionesDineroSumarDineroRecaudadoDiaNormal(){
//Recorremos todas las sesiones
double cantidadEntradasEspectador=0;
double cantidadEntradasNormales=0;

for(Sesion s: sesiones){

//Si la fecha coincide la entrada es de dia del espectador, en caso contrario la entrada es una entrada normal
if(s.getFechaSimpleDMA().equals("18 5 2015")){

System.out.println("Entradas dia espectador: " + (s.totalEntradas()));
cantidadEntradasEspectador=cantidadEntradasEspectador+ (s.totalEntradas());
}

else

{
cantidadEntradasNormales = cantidadEntradasNormales + s.totalEntradas();
System.out.println("Entradas normales: " + cantidadEntradasNormales);
}}}

-----------------------------------------Este es el código de la clase Sesion contenida por las sala

public int totalEntradas(){
return entradas.size();
}

julio 2, 2015 | Unregistered CommenterJuan

Hola juan, pues el problema era como me sospechaba imprimes dentro del for.
así que lógicamente te imprimirá tantas entradas normales o de día espectador tengas en tu arreglo sesiones.

--bueno la solucion es la misma que la anterior,
(modificando tu metodo)

public void recorrerSesionesDineroSumarDineroRecaudadoDiaNormal(){
//Recorremos todas las sesiones
double cantidadEntradasEspectador=0;
double cantidadEntradasNormales=0;

for(Sesion s: sesiones){

//Si la fecha coincide la entrada es de dia del espectador, en caso contrario la entrada //es una entrada normal
if(s.getFechaSimpleDMA().equals("18 5 2015")){
cantidadEntradasEspectador=cantidadEntradasEspectador+ (s.totalEntradas());
}

else

{
cantidadEntradasNormales = cantidadEntradasNormales + s.totalEntradas();
}//fin de else
}//fin de for
System.out.println("Entradas dia espectador: " + cantidadEntradasEspectador);
System.out.println("Entradas normales: " + cantidadEntradasNormales);
}//fin del metodo

saludos

julio 2, 2015 | Registered Commenterjhosep

Hola que tal, acabo de probarlo y esto es lo que me imprime

Entradas dia espectador: 6.0
Entradas normales: 0.0
Entradas dia espectador: 0.0
Entradas normales: 0.0
Entradas dia espectador: 0.0
Entradas normales: 11.0
Entradas dia espectador: 0.0
Entradas normales: 2.0

es decir no me realiza la suma de las 11 entradas y las 2 entradas,
me gustaría que me imprimiera Entradas normales 13.0

la verdad no entiendo porque

un saludo

julio 2, 2015 | Unregistered CommenterJuan

Hola juan una pregunta de donde llamas al método

recorrerSesionesDineroSumarDineroRecaudadoDiaNormal()?,

porque te imprime resultados diferentes? entras y sales de la aplicación o como?, porque el problema evidentemente esta en el manejo del vector sesiones.


saludos

julio 2, 2015 | Registered Commenterjhosep

Hola

tengo una clase principal en la que tengo creado un cine y en la misma pongo lo siguiente:

cineUno.DineroRecaudadoEnElCine();

la clase principal tiene el public static void main(String[] args){}, desde esta ejecuto todo el programa.

la clase Cine tiene el siguiente método:

public void DineroRecaudadoEnElCine(){
for(Sala s: salas){
s.recorrerSesionesDineroSumarDineroRecaudadoDiaNormal();
}
}

que me recorre todas las salas que tiene el cine, luego dentro de la clase sala, que es la que contiene a las sesiones mediante una lista.

esta es la clase que contiene el método:

public void recorrerSesionesDineroSumarDineroRecaudadoDiaNormal()

este método me recorre las diferentes sesiones, si coinciden con una fecha me las considera como día del espectador, si no coincide, es decir el resto de las fechas, las considera como día normal

y mediante el método que tengo en la clase sesión:

public double totalEntradas(){
return entradas.size();
}

me devuelve las entradas que tienen las diferentes sesiones

julio 2, 2015 | Unregistered CommenterJuan

creo entender, entonces todos esos resultados son de salas distintas
Es decir tus resultados se podrian interpretar:
sala 1
Entradas dia espectador: 6.0
Entradas normales: 0.0
sala2
Entradas dia espectador: 0.0
Entradas normales: 0.0
sala 3
Entradas dia espectador: 0.0
Entradas normales: 11.0
sala 4
Entradas dia espectador: 0.0
Entradas normales: 2.0

y tu al final lo que quieres es la suma de todas las salas?

bueno te propongo una solucion, la cual te dara una idea como resolver tu problema.

supondre que tienes una clase sala, asi:

public class Sala{
...
double cantidadEntradasEspectador=0;
double cantidadEntradasNormales=0;


public double getCantidadEntradasEspectador(){
return cantidadEntradasEspectador;
}
public double getCantidadEntradasNormales(){
return cantidadEntradasNormales;
}
public void recorrerSesionesDineroSumarDineroRecaudadoDiaNormal(){
//Recorremos todas las sesiones

for(Sesion s: sesiones){

//Si la fecha coincide la entrada es de dia del espectador, en caso contrario la entrada //es una entrada normal
if(s.getFechaSimpleDMA().equals("18 5 2015")){
cantidadEntradasEspectador=cantidadEntradasEspectador+ (s.totalEntradas());
}

else

{
cantidadEntradasNormales = cantidadEntradasNormales + s.totalEntradas();
}//fin de else
}//fin de for

}//fin del metodo
}


... ya en tu metodo que recorres las salas

public void DineroRecaudadoEnElCine(){
double cantidadEntradasEspectador=0;
double cantidadEntradasNormales=0;
for(Sala s: salas){

s.recorrerSesionesDineroSumarDineroRecaudadoDiaNormal();
cantidadEntradasEspectador+=s.getCantidadEntradasEspectador();
cantidadEntradasNormales+=s.getCantidadEntradasNormalesEspectador();
}
System.out.println("Entradas dia espectador: " + cantidadEntradasEspectador);
System.out.println("Entradas normales: " + cantidadEntradasNormales);
}

y asi obtendrias el total de todas las salas.

saludos.

julio 3, 2015 | Registered Commenterjhosep

jhosep muchísimas gracias por tu ayuda, finalmente las entradas si que se suman y puedo dejarlo por terminado.

un saludo y muchas gracias

Rubén

julio 4, 2015 | Unregistered CommenterJuan