Problema simples de locadora de carros

9 respostas
mulatox

To fazendo um programinha bem simples pra cadastrar carro, onde fiz uma classe carro e outra classe locadora que vai ter o metodo main e a interface grafica do programa.
o problema esta que na hora de eu apertar o botao que fiz pra cadastrar o carro ele da erro!
a ideia era que ele pegasse cada informacao que esta nos TextFields e passasse pro atribuito do novo carro.

o codigo esta aqui
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class Locadora extends JFrame {

	 Carro carros[];
	int capacidade=10;
	int quantidade=0;
	
	 JFrame janela = new JFrame();
	 JTextField nome = new JTextField("digite o nome do carro");
	 JTextField marca = new JTextField("digite a marca do carro");
	 JTextField preço = new JTextField("digite o preço do carro");
	 JTextField codigo = new JTextField("digite o codigo do carro");
	
	 JButton botao = new JButton("pesquisar"); 
	 JButton botao2 = new JButton("registrar"); 
	 
	
	Locadora loc = new Locadora();
	
	
	
	public int getCapacidade() {
		return capacidade;
	}
	
	public void setCapacidade() {
		carros[10]= new Carro();
		
	}
	
	public int getQuantidade() {
		return quantidade;
	}
	
	public  void ggo() {
	
		
		
		
		botao.addActionListener(new ManipularPesquisa());
        botao2.addActionListener(new ManipularRegistro());
        janela.setLayout(null);
        addComponent(janela,nome,0,0,170,20);
		addComponent(janela,marca,0,55,170,20);
		addComponent(janela,preço,0,110,170,20);
		addComponent(janela,codigo,0,165,170,20);
		addComponent(janela,botao,180,27,100,40);
		addComponent(janela,botao2,180,137,100,40);
		janela.setDefaultCloseOperation(HIDE_ON_CLOSE);
		janela.setSize(300,300);
        janela.setVisible(true);
		
		
		
		
		
	}
	
	public static void main(String args[]){
		
		Locadora ld = new Locadora();
		ld.ggo();
	}
	
	public void cadastrarCarro(){
		if(this.quantidade<this.capacidade){
			carros[this.quantidade]=new Carro() ;
			this.quantidade++;
		}
		
		}
		public Carro pesquisarCarro(String n){
			for(int i = 0; i < quantidade;i++){
				if (carros[i].getNome()==n)
						return carros[i];
			}
		 return null;
		}
	
		private  void addComponent(Container container,Component c,int x,int y,int width,int height) 
		{ 
			c.setBounds(x,y,width,height); 
			container.add(c); 
		} 
	
		class ManipularRegistro implements ActionListener{

			@Override
			public void actionPerformed(ActionEvent arg0) {
				
				loc.setCapacidade();
				loc.cadastrarCarro();
				
				carros[quantidade-1].setNome(nome.getText());
				carros[quantidade-1].setCodigo(Integer.parseInt(codigo.getText()));
				carros[quantidade-1].setMarca(marca.getText());
				carros[quantidade-1].setPreço(Integer.parseInt(preço.getText()));
			
				
			}
		}
			class ManipularPesquisa implements ActionListener{

				@Override
				public void actionPerformed(ActionEvent arg0) {
							JOptionPane.showMessageDialog(null,loc.pesquisarCarro(nome.getText()).getNome());			
					
					
				}
			
			
			
		}
		
}
a classe carro ta aqui:
public class Carro {
String nome, marca;
int preço,codigo;
boolean alugado;

public boolean isAlugado() {
	return alugado;
}
public void setAlugado(boolean alugado) {
	this.alugado = alugado;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getMarca() {
	return marca;
}
public void setMarca(String marca) {
	this.marca = marca;
}
public int getPreço() {
	return preço;
}
public void setPreço(int preço) {
	if (alugado==false)
	this.preço = preço;
	
}

public int getCodigo() {
	return codigo;
}
public void setCodigo(int codigo) {
	if (alugado==false)
	this.codigo = codigo;
	
}
public Carro(String nome,String marca,int preço, int codigo) {
	
	this.codigo = codigo;
	this.marca = marca;
	this.nome = nome;
	this.preço = preço;
}
public Carro(){
	
}


}

por favor me ajudem.

9 Respostas

B

Que erro que dá?

mulatox

eh esse

at Locadora.(Locadora.java:25)

B

Dentro de uma classe Locadora tem um new Locadora que é chamado automaticamente.

Agora perceba que dentro dessa Locadora vai ter outro new Locadora, e dentro dele outro, e assim vai.

Remova essa recursão.

mulatox

Bruno Laturner:
Dentro de uma classe Locadora tem um new Locadora que é chamado automaticamente.

Agora perceba que dentro dessa Locadora vai ter outro new Locadora, e dentro dele outro, e assim vai.

Remova essa recursão.

Valeu, mais tarde vou tentar isso :smiley:

mulatox

Bruno Laturner:
Dentro de uma classe Locadora tem um new Locadora que é chamado automaticamente.

Agora perceba que dentro dessa Locadora vai ter outro new Locadora, e dentro dele outro, e assim vai.

Remova essa recursão.

eu removi e criei outra classe pra testar e não deu certo :cry: , acho que o problema não era essa recursão é algo com a linha 34 e com a 98.
não sei o que pode estar de errado.
se alguem souber por favor me ajude

Marky.Vasconcelos

Não é:

carros[10] = new Carro();

E sim:

carros = new Carro[10];
mulatox

Mark_Ameba:
Não é:

carros[10] = new Carro();

E sim:

carros = new Carro[10];

valeu! Mark_Ameba
eu ainda sou muito novo no java, erro de noob mesmo
valeu pela atenção

B

Olá,

desculpem a questão básica. Estou a tentar aprender com o código disponível.
Como executar o código com o eclipse. Não deveria aparecer o ambiente grafico quando clicamos em cima do ficheiro Locadora com o botao direito do mouse e escolhermos RUN AS -> JAVA APLLICATION

abc,
bushin

S

Estou com um trabalho pra entregar e queria que você por favor postasse ai o código main desse projeto ou o código principal que chama as funções. Por favor…

Criado 13 de outubro de 2008
Ultima resposta 10 de jun. de 2015
Respostas 9
Participantes 5