Ajuda com List

8 respostas
thundercas

Fala galera, beleza??? Estou novamente precisando de sua ajuda!!! O código abaixo está me dando o seguinte erro:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Percebi que o erro ocorre justamente na comparação

if(((Veiculo) listaVeiculo.get(counter)).getPlaca() == “LPC2541”){”

Reforço tambem que o método getPlaca retorna “this.placa”. Alguém poderia me ajudar por favorrrr??? Valeu!!!

import java.util.*;

import javax.swing.JOptionPane;

import veiculos.*;

public class Estacionamento {
	public static void main(String[] args) {
		Veiculo veiculo = new Veiculo();
		Veiculo carro = new Carro();
		Veiculo moto = new Moto();
		Veiculo caminhao = new Caminhao();
		List listaVeiculo = new ArrayList();
		String pergunta;

		veiculo.adiciona();
		listaVeiculo.add(veiculo);
		System.out.println("" + ((Veiculo) listaVeiculo.get(0)).getPlaca());
		
		for (int c = 0; c < 5; c++) {
			pergunta = JOptionPane.showInputDialog("Digite a opção desejada:\n\n1) Adicionar Veículo\n2) Baixar Veículo\n3) Fechar Programa");

			if (pergunta.equals("1")) {
				veiculo.adiciona();
				pergunta = JOptionPane.showInputDialog("Informe o veículo que deseja adicionar, sendo:\n\n1) Carro\n2) Moto\n3) Caminhao");
				switch (Integer.parseInt(pergunta)) {
				case 1:
					carro = veiculo;
					listaVeiculo.add(carro);
					JOptionPane.showMessageDialog(null, "A carro "	+ carro.getPlaca()	+ " foi adicionada com sucesso!");
				case 2:
					moto = veiculo;
					listaVeiculo.add(moto);
					JOptionPane.showMessageDialog(null, "A moto " + moto.getPlaca() + " foi adicionada com sucesso!");
				case 3:
					caminhao = veiculo;
					listaVeiculo.add(caminhao);
					JOptionPane.showMessageDialog(null, "O caminhao " + caminhao.getPlaca()	+ " foi adicionada com sucesso!");
				}
			} else if (pergunta.equals("2")) {
				pergunta = JOptionPane.showInputDialog("Digite a placa do veículo que deseja baixar:");
				JOptionPane.showMessageDialog(null, "Tamanho do Size: " + listaVeiculo.size());
				for(int counter = 0; counter <= listaVeiculo.size(); counter++){   
					if(((Veiculo) listaVeiculo.get(counter)).getPlaca() == "LPC2541"){
						//System.out.println("O veículo " + ((Veiculo) listaVeiculo.get(counter)).getPlaca() + " foi removido com sucesso!" );
//						listaVeiculo.remove(counter);
					}
				}
			} else {
				JOptionPane.showMessageDialog(null, "O programa será finalizado!!");
				System.exit(0);
			}
		}
		System.exit(0);
	}
}

8 Respostas

ivo_costa

troca o :
for(int counter = 0; counter <= listaVeiculo.size(); counter++){

por:
for(int counter = 0; counter < listaVeiculo.size(); counter++){

obs.: o .size te retorna o tamanho da lista, se ele te retornar 5 então você só pode acessar de 0 a 4 e não o 5 pq vai dar nullPointer.

Flw!

thundercas

Beleza Ivo, você matou metade do problema, a outra metade, com sua ajuda, consegui resolver!!! Ao invés de

if(((Veiculo) listaVeiculo.get(counter)).getPlaca() == "LPC2541")

eu usei:

if(((Veiculo) listaVeiculo.get(counter)).getPlaca().equals("LPC2541"))

Daí matou o problema de vez :stuck_out_tongue:

Mas agradeço o rápido retorno, vou dar continuidade a meus estudos!! Obrigado e abraço a todos!!!

thundercas

Aproveitando o tópico, acho que o programa está com pouco encapsulamento… Por exemplo, o método de remoção, discutido acima, não deveria estar separado para sempre ser chamado… Como fazer isso neste caso que utilizou List???

ViniGodoy

Crie uma classe que encapsula a sua lista. E ponha o método de remoção nessa classe.

É preferível fazer uma classe que “tenha” a lista e não que seja um filho de List.

thundercas

Entao, mas vamos lá… Eu criei um tópico esses dias perguntando se eu deveria controlar o List na classe Principal ou, no meu caso, na classe Veículos, e me informaram que deveria controlar na Principal (Também achei mais lógico). Agora, como vou criar uma classe que encapsule esta lista??? Não teria que criar a lista direto na classe Veículos???

thundercas

Alguém saberia como me ajudar???

thundercas

Valeu galera, mas já descobri por aqui. Era so passar a List como argumento kkkkk moleza :stuck_out_tongue: Mas valeu ae, abraço a todos.

ViniGodoy

Criar a lista de veículos na classe veículos?

Vamos ver o que você quer dizer com isso:
“Um veículo tem vários veículos associados a ele”.

Se você estiver modelando a classe “Cegonheira”, eu até entenderia. :lol:

Criado 19 de novembro de 2007
Ultima resposta 20 de nov. de 2007
Respostas 8
Participantes 3