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

¿Array Infinito?

Estas en el tema de ¿Array Infinito? en el foro de Java en Foros del Web. Saludos a toda la comunidad Espero que alguien me pueda dar una ayuda o una orientación para mi problema. Estoy haciendo un trabajo que me ...
  #1 (permalink)  
Antiguo 10/12/2011, 21:27
Avatar de zackrated  
Fecha de Ingreso: junio-2008
Ubicación: Leon Guanajuato,México
Mensajes: 532
Antigüedad: 11 años, 5 meses
Puntos: 13
¿Array Infinito?

Saludos a toda la comunidad

Espero que alguien me pueda dar una ayuda o una orientación para mi problema.


Estoy haciendo un trabajo que me dejaron en la universidad, se que yo tengo que buscar la solucion, pero créanme que tengo toda la semana buscando y no encuentro la solución, cabe mencionar que tengo apenas unos meses programando por lo que no soy experto.

Tengo el siguiente problema

Cita:
En un determinado peaje se desea saber cuantos carros particulares y cuántos autobuses pasaron en un dia, lo mismo que el promedio de personas que viajan en carro particular y el priomedio de las personas que viajan en bus. Se debe tener en cuenta que por cada vehículo que pase, se debe indagar por el tipo de transporte que es y el número de pasajeros que transporta

NOTA: Si es un carro particular se identifica con 1, si es bus con 2, si es otro con 3. NO se sabe cuántos datos deben ser capturados , pero al final se deben mostrar los resultados

Total de autos, autobuses y "Otro" capturados con su promedio de pasajeros
He leído en diversas fuentes que los arreglos SIEMPRE deben tener un tamaño fijo, que en su ligar utilice ArrayList, pero el problema es que sólo captura datos de tipo Object, por lo que no puedo realizar ninguna operación matemática.

Debe haber algun "Truco" para hacer el arreglo dinámico.

Este es el código que tengo por ahora, pero solo me captura el primer registro y los demás ya no.

Código HTML:
import javax.swing.JOptionPane;
public class Peaje {
	
private int auto [];
private int bus []; 
private int otro []; 

private int tipoDeAuto = 0;
//private static int numeroPasajeros = 0;

static int  contadorA = 0;
static int  contadorB = 0;
static int  contadorO = 0;


//////////////////////////////
static int longA = 0;
static int longB = 0;
static int longO = 0;

/////////////////////////
static	int opciones = 0;


/******************************************************************/


    public Peaje(int longA) {
    	
    	
    	
    
    	auto = new int [longA + 1];
    	bus = new int [longA + 1];
    	otro = new int [longA + 1];
    	
    	
    
    }
    
/*********************************************************************/

public void Auto () {
	int i = 0; 
//	i = contadorA;
    int numeroPasajeros	= Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el Total de Pasajeros", "Opciones", JOptionPane.QUESTION_MESSAGE));			
	
	for (i = contadorA; i < auto.length; i++){
		auto[i] = numeroPasajeros;
		System.out.println("El arreglo es " + auto[i]);
	
	                                         }


                          }


/******************************************************************/

public void Bus () {
int	numeroPasajeros	= Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el Total de Pasajeros", "Opciones", JOptionPane.QUESTION_MESSAGE));		
		for (int i = 0; i < bus.length; i++){
		bus[i] = numeroPasajeros;
		
	}

	
                        }

/**************************************************************************/ 
public void Otro () {
 int numeroPasajeros	= Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el Total de Pasajeros", "Opciones", JOptionPane.QUESTION_MESSAGE));			
		for (int i = 0; i < otro.length; i++){
		otro[i] = numeroPasajeros;
		
	}


                         }

/************************************************************************/
public void Imprimir () {
	
	// Autos y su promedio
	String resultado = "\n";
	int suma = 0;
	double promedioAutos = 0;
		for (int i = 0; i < auto.length; i++){
		resultado += auto[i]; // Muestra los pasajeros cap
		suma += auto[i]; // Suma a los pasajeros
		
		
		}
		
		promedioAutos = (suma / auto.length); // Promedio de Pasajeros
		
	JOptionPane.showMessageDialog(null, "El total de pasajeros capturados son " + resultado + " El promedio es " + promedioAutos, 
									"Resultado de Autos", JOptionPane.INFORMATION_MESSAGE);
									
	// Bus y su Promedio
	
	String resultadoB = "\n";
	int sumaB = 0;
	double promedioBus = 0;
		
		for (int j = 0; j < bus.length; j++){
		resultadoB += bus[j]; // Muestra los pasajeros cap
		sumaB += bus[j]; // Suma a los pasajeros
		
		
		}
		
		promedioBus = (sumaB / bus.length); 
			
			JOptionPane.showMessageDialog(null, "El total de pasajeros capturados son " + resultadoB + "El promedio es " + promedioBus, 
									"Resultado de Autobus", JOptionPane.INFORMATION_MESSAGE);
									
									
	/////////////////////////////////////////////////////////////////////////////////////////////////////			
	// Otros y su Promedio
	
   String resultadoO = "\n";
	int sumaO = 0;
	double promedioO = 0;
	
		for (int k = 0; k < bus.length; k++){
		resultadoO += otro[k]; // Muestra los pasajeros cap
		sumaB += otro[k]; // Suma a los pasajeros
		
		
		}
		
		promedioO = (sumaO / otro.length); 
			
				JOptionPane.showMessageDialog(null, "El total de pasajeros capturados son " + resultadoO + "El promedio es " + promedioO, 
									"Resultado de otro", JOptionPane.INFORMATION_MESSAGE);
		
}
   

/*****************************************************************************/

public static void main (String args []){
	
		
	
	Peaje o = new Peaje(longA);
	
   longA = 0;
		
	
while ( !((opciones == 4) ||  (opciones == 5))){
    
    
	
	opciones = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el tipo de vehículo\n1 Automovil Privado\n2 Autobus\n3 Otro\n4 Imprimir Hasta ahora\n5 Salir", 
									"Opciones", JOptionPane.QUESTION_MESSAGE));
	
					
	switch (opciones){
		
		case 1: longA = longA + 1;
			    o.Auto();
			    contadorA = contadorA + 1;		        
		        break;
		case 2: o.Bus();
				contadorB++;
				break;
		case 3: o.Otro();
		        contadorO++;
				break;
	    case 4: o.Imprimir();
	    		break;
	    case 5: System.exit(0);
		
	}
	
		}  
			
}

}
Como podrán ver mi In-experiencia me hace hacer códigos desordenados xD.


Si alguien me puede dar una orientación, se lo agradecería muchísimo

Saludos
__________________
Si en este mundo las personas hicieran su trabajo bien hecho...Este mundo no sería el mismo
  #2 (permalink)  
Antiguo 10/12/2011, 22:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.773
Antigüedad: 15 años, 1 mes
Puntos: 454
Respuesta: ¿Array Infinito?

Hola:

Hay más cosas además de arrays. Por ejemplo, una LinkedList() o un ArrayList() se pueden cambiar de tamaño sobre la marcha.

En cualquier caso, sólo te piden número de vehículos de cada y promedio de personas que viajan. No es necesario guardar todos los datos de todos los vehículos. Se pueden calcular ambas cosas sobre la marcha (número de vehículos y promedio de viajeros) sin necesidad de guardar todos los vehículos.

Por ejemplo, si ahora viene un autobus con 40 viajeros

// promedio viajeros ahora = promedio viajeros antes * numero autobuses antes + numero viajeros en autobus actual / (numero autobuses antes + 1)
promedioViajerosAutobus = (promedioViajerosAutobus*numeroAutubuses+40)/(numeroAutobuses+1)

numeroAutobuses++;

y los valores iniciales de ambas variables serían 0.

por lo que con dos variables por tipo de vehículo te vale.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 11/12/2011, 06:21
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 7 años, 11 meses
Puntos: 0
Respuesta: ¿Array Infinito?

Como te dijo chuidiang, si simplemente tienes que llevar la cuenta total de todos los vehiculos de cada clase lo mas comodo es crear contadores e ir incrementandolos.

Otra cosa seria que te obligasen a llevar la cuenta de cada vehiculo invididualmente donde ahi si que tendrias que meterlos en un array o una lista
  #4 (permalink)  
Antiguo 12/12/2011, 03:25
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 8 años, 6 meses
Puntos: 344
Respuesta: ¿Array Infinito?

Las colecciones (ArrayList, LinkedList) en las nuevas versiones de Java (a partir de la versión 1.5) soportan el uso de genéricos, por lo que puedes tener una lista de enteros (aunque no pueden ser de int, sino de Integer).

Aunque sean de Integer, en la versión 1.5 también introdujeron el autoboxing entre tipos primitivos como int y tipos de referencia como Integer, es decir, que puedes usar Integer como si fuera un int.

Código Java:
Ver original
  1. ArrayList<Integer> enteros = new ArrayList<Integer>();
  2.  
  3. enteros.add(5); //Autoboxing, convierte el int 5 en un Integer
  4.  
  5. int numero = enteros.get(0); //Unboxing, convierte el Integer que devuelve get en un int

Etiquetas: jar, 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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 11:11.