Vetor tridimensional java

6 respostas
C

pessoal como eu faço para armazernar valores em um vetor tridimensional?tenho um vetor passageiroTransporta e quero armazer os valores que estou passando por parametro neles,mais só consigo aramazer um valor.
alguém pode me ajudar?e que nunca usuei vetor de 3 dimensões.
obrigado

private int passageiroTransporta[][][] = new int[24][31][12];
	private int qtdPassageiros = 0;
	 ArrayList<PassageirosHora> guardaPassageiro = new ArrayList<PassageirosHora>();
	 
	public void PassageirosHora(int hora,int dia,int mes){
		
		
		 qtdPassageiros++;
		 System.out.println(qtdPassageiros);
		 for (int i = 0; i < passageiroTransporta.length; i++) {
			if (passageiroTransporta != null) {
				passageiroTransporta[i][i][i]=dia;
                               break;
			}
		}
		
		
	}

	public static void main(String[] args) {
		PassageirosHora passageiroHora = new PassageirosHora();
		passageiroHora.PassageirosHora(10, 2, 1);
		
	}

}

6 Respostas

souzaJr

Cara, eu acho que você só devia criar um vetor unidimensional com três posições (hora, dia e mês - as posições que você precisar)… e fazer as validações no início do método!

Ou então criar uma classe que encapsule esses atributos aí…

Pelo jeito que você tá criando aí… você iria recuperar a data pelas posições do array, então poderia colocar qualquer valor só pra identificar a posição!

C

o enuciado do exercicio pedi para criar uma matriz.Então ta errado do geito que estou fazendo?

Você está trabalhando em um projeto de automação de uma estação ferroviária. Uma das classes
identificadas é PassageirosHora, que foi definida como sendo uma matriz tridimensional de
inteiros que em cada posição guarda a quantidade de passageiros transportados por hora, de
determinado dia, de determinado mês. Assim a matriz é de ordem 12 meses x 30 dias x 24
horas. Crie esta classe, que deve ter as seguintes funcionalidades

souzaJr

Ok, embora o enunciado esteja estranho… então essa sua matriz vai guardar a quantidade de passageiros daquele dia… Pra fazer o método insert basta ir na posição que o cara passou pelo método e adicionar uma unidade!!!

Sobre a sua dúvida, você não vai guardar três posições, você vai guardar uma unidade a mais na posição que for passada pelo método!!

É importante você validar (verificar se os números passados estão dentro dos limites do array ) pois poderá receber uma Exception…

Até mais.

C

ok,obrigado souza,então é só fazer assim o adiciona?

public void PassageirosHora(int hora, int dia, int mes) {

qtdPassageiros++;

	for (int i = 0; i < passageiroTransporta.length; i++) {

		passageiroTransporta[hora][dia][mes]++;
		System.out.println(passageiroTransporta[hora].toString());
		System.out.println(passageiroTransporta[dia].toString());
		System.out.println(passageiroTransporta[mes].toString());
	}

}
souzaJr

Quase isso … Abaixo segue um código que vai te ajudar…

Lembre-se que os arrays em Java começam no índice 0. Ou seja…Janeiro igual ao mês 0. Mas, caso precise exibir algumas informações, você pode adaptá-lo para ficar tudo direitinho…aproveite para fazer isso.

Até mais.

public class Teste {
	private int passageiroTransporta[][][] = new int[24][31][12];
	
	//Retorna true se os parâmetros estiverem corretos!!
	public boolean inserePassageiro(int hora,int dia,int mes){
		if(hora >= 0 && dia >= 0 && mes >= 0){
			if(hora < 24 && dia < 31 && mes < 12){
				passageiroTransporta[hora][dia][mes]++;
				return true;
			}
		}	
		return false;
	}
	
	public int getNumPassageiros(){
		int resultado = 0;
		for(int [][] a: this.passageiroTransporta){
			for(int [] b: a){
				for(int c: b){
					resultado += c;
				}
			}
		}
		return resultado;
	}

	public static void main(String[] args) {
		Teste t = new Teste();
		t.inserePassageiro(10, 2, 1);
		System.out.println(t.getNumPassageiros());
	}

}
C

obrigado pelo help.

Criado 26 de outubro de 2008
Ultima resposta 26 de out. de 2008
Respostas 6
Participantes 2