Ajuda com J2ME

1 resposta
A
Bom galera, sou iniciante em j2me e to com uma dúvida.. que ja tentei resolver e já estou pirando aqui tipo... meu professor passou um sistemas para multas e verificação de pontos perdidos por placa do veiculo
import java.util.Date;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;

public class Multas extends MIDlet implements CommandListener{
	
	private Display tela;
	private TextField placa, placa2;
	private Form form, form2;
	private ImageItem img;
	private ChoiceGroup tipo;
	private DateField data;
	private Command sair, multar, pontuacao, voltar, pesquisar;
//	private int pontos;
	private CorpoMulta multa[];
	
	public Multas() {

	}

	public CorpoMulta pesquisar(CorpoMulta multa[]){
		int x = 0;
		boolean achei = false;
		while ((achei == true) || (x < multa.length) ){
			if (multa[x].getPlaca().equals(placa.getString()) ){
				achei = true;
				return multa[x];
			}
			x++;
		}
		return null;
	}
	
	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub

	}

	protected void pauseApp() {
		// TODO Auto-generated method stub

	}

	protected void startApp() throws MIDletStateChangeException {
		tela = Display.getDisplay(this);
		form = new Form("Sistema de Multas");
		form2 = new Form("Pesquisa de placas");
		multa = new CorpoMulta[10];
		Image im = null;
		try {
			im = Image.createImage("/policia.PNG");
		} catch (Exception e) {
	
		}
		img = new ImageItem("Policia", im, ImageItem.LAYOUT_CENTER, null);
		placa = new TextField("Placa", "", 8, TextField.ANY);
		placa2 = new TextField("Placa", "", 8, TextField.ANY);
		tipo = new ChoiceGroup("Tipo", Choice.EXCLUSIVE);
		Date d = new Date(System.currentTimeMillis());
		data = new DateField("Data", DateField.DATE);
		data.setDate(d);
		sair = new Command("Sair", Command.EXIT, 0);
			//comandos referentes ao form
		multar = new Command("Multar", Command.SCREEN, 1);
		pontuacao = new Command("Pontuacao", Command.SCREEN, 1);
			//comandos referentes ao form2
		voltar = new Command("Voltar", Command.SCREEN, 1);
		pesquisar = new Command("Pesquisar", Command.SCREEN, 1);
		
		tipo.append("Gravissima", null);
		tipo.append("Grave", null);
		tipo.append("Media", null);
		form.append(img);
		form.append(placa);
		form.append(tipo);
		form.append(data);
		form.addCommand(sair);
		form.addCommand(multar);
		form.addCommand(pontuacao);
		form.setCommandListener(this);
		
		form2.append(placa2);
		form2.addCommand(sair);
		form2.addCommand(voltar);
		form2.addCommand(pesquisar);
//		form2.setCommandListener(this);
		
		tela.setCurrent(form);
	}
	
	public void commandAction(Command c, Displayable d){
		int i = -1;
		if (c.equals(sair)){
			notifyDestroyed();
		}
		
		if (c.equals(multar) ){
			i++;
			multa[i].setPlaca(placa.getString());
			multa[i].setTipoMulta(tipo.getSelectedIndex());
			switch(tipo.getSelectedIndex() ){
			case 0:
				multa[i].setPontos(7);
				placa.setString("");
				
			break;
			
			case 1:
				multa[i].setPontos(5);
				placa.setString("");
			break;
			
			case 2:
				multa[i].setPontos(3);
				placa.setString("");
			break;
			}
		}
		if (c.equals(pontuacao) ){
			tela.setCurrent(form2);
			form2.setCommandListener(this);		
		}
		
		if (c.equals(voltar) ){
			tela.setCurrent(form);

		}
		
		if(c.equals(pesquisar) ){
			Alert msg;
			if (! pesquisar(multa).equals(null) ){
				msg = new Alert("Pontuação","pontuação perdida da placa "
								+ multa +"é de "+multa+" pontos", null, 
								AlertType.INFO);
			msg.setTimeout(3000);
			tela.setCurrent(msg);	
			} else{
				msg = new Alert("Pontuação", "Não exixte multa para placa"+ placa.getString(), null, AlertType.INFO);
				msg.setTimeout(4000);
				tela.setCurrent(msg);
			}	
		}

	}
}

meu problema ta sendo quando eu executo um comando ele da erro NullPointerException

java.lang.NullPointerException
at Multas.commandAction(+44)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)

1 Resposta

Norxs
multa[i].setPlaca(placa.getString());

tenta bota um if antes ai ...

if(multa[i] == null) {
      System.out.println("axei meu erro");
}
Criado 5 de março de 2009
Ultima resposta 6 de mar. de 2009
Respostas 1
Participantes 2