NEMESISaka Posted November 29, 2012 at 11:15 PM Report #485202 Posted November 29, 2012 at 11:15 PM Boas a todos... Estive a fazer um trabalho e sinceramente, apareceu-me um erro/bug que não consigo compreender, já procurei na net mas também não acho nada de útil e como ultima esperança venho aqui a procura de uma ajudinha... Um pedaço do código que me da erro é este: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // JOptionPane.showMessageDialog(null, "teste"); boolean Confirm = ConfirmarDados(); // JOptionPane.showMessageDialog(null, "teste"); if (Confirm = false){ JOptionPane.showMessageDialog(this, "Erro ao preencher formulario!"); } } é um botão que ao clicar chama uma função "ConfirmarDados" em que verifica se todos os dados introduzidos pelo utilizador estão correctos e depois devolve um boolean, false caso esteja incorrecto e true se estiver tudo bem... mas o problema é que quando chega ao "boolean Confirm = ConfirmarDados();" o resto do código simplesmente não é executado... já fiz testes (os comentários presentes no código) e a linha antes do "boolean Confirm = ConfirmarDados();" é executada, no entanto a que vem após essa já não é, e não estou a falar do if... Alguém sabe do que possa ser? Até já pensei que fosse do return da função "ConfirmarDados" mas sem ele não teria valor para o "Confirm" a nao ser que o passa-se por referencia... Desde já agradeço pela disponibilidade e pela atenção. Obrigado!
NunoDinis Posted November 29, 2012 at 11:51 PM Report #485206 Posted November 29, 2012 at 11:51 PM Coloca a função aqui. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
Baderous Posted November 30, 2012 at 12:19 AM Report #485208 Posted November 30, 2012 at 12:19 AM A comparação faz-se com o operador == e não com o =.
NEMESISaka Posted November 30, 2012 at 12:57 AM Author Report #485209 Posted November 30, 2012 at 12:57 AM A comparação faz-se com o operador == e não com o =. Não resolve :\ mas muito obrigado 🙂 Coloca a função aqui. Ok Nuno...Aqui fica: private boolean ConfirmarDados() { // flag boolean flag = true; //Dados String username = Utilizador.getText(); if (username.equals("")) { this.lUser.setForeground(Color.red); flag = false; } else { this.lUser.setForeground(Color.GREEN); } String password = new String(Password.getPassword()); String password2 = new String(Password2.getPassword()); if (password.equals("")) { this.lPass.setForeground(Color.red); this.lPass2.setForeground(Color.red); flag = false; } else { if (password.equals(password2)) { this.lPass.setForeground(Color.GREEN); this.lPass2.setForeground(Color.GREEN); } else { if (password != password2) { this.lPass.setForeground(Color.red); this.lPass2.setForeground(Color.red); flag = false; } } } String nome = Nome.getText(); if (nome.equals("")) { this.lNome.setForeground(Color.red); flag = false; } else { this.lNome.setForeground(Color.GREEN); } long bi; try { bi = Long.valueOf(Bi.getText()); this.lBI.setForeground(Color.GREEN); } catch (NumberFormatException expt) { this.lBI.setForeground(Color.red); flag = false; // chega aqui se o que estiver no bi nao for um numer } String morada = Morada.getText(); if (morada.equals("")) { this.lMorada.setForeground(Color.red); flag = false; } else { this.lMorada.setForeground(Color.GREEN); } String localidade = Localidade.getText(); if (localidade.equals("")) { this.lLoc.setForeground(Color.red); flag = false; } else { this.lLoc.setForeground(Color.GREEN); } String nacionalidade = Nacionalidade.getText(); if (nacionalidade.equals("")) { this.lNacio.setForeground(Color.red); flag = false; } else { this.lNacio.setForeground(Color.GREEN); } String telefone = Telefone.getText(); if (telefone.equals("")) { this.lTele.setForeground(Color.red); flag = false; } else { this.lTele.setForeground(Color.GREEN); } String sexo = Sexo.getName(); if (sexo == "M") { boolean sexobool = true; } else { boolean sexbool = false; } Calendar Data = Calendar.getInstance(); String dia = Dia.getName(); Integer diaCalen = Integer.valueOf(dia); String ano = Ano.getName(); Integer anoCalen = Integer.valueOf(ano); Integer mes = Mes.getSelectedIndex(); Integer mesCalen = mes + 1; Data.set(Calendar.DAY_OF_MONTH, diaCalen); Data.set(Calendar.MONTH, mesCalen); Data.set(Calendar.YEAR, anoCalen); // fim dos dados return flag; } É um pouco extenso, mas é basico... Obrigado por tudo 🙂
KTachyon Posted November 30, 2012 at 01:22 AM Report #485212 Posted November 30, 2012 at 01:22 AM Se apresentares uma mensagem depois da linha boolean Confirm = ConfirmarDados();, a mensagem aparece? “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
NEMESISaka Posted November 30, 2012 at 08:26 AM Author Report #485218 Posted November 30, 2012 at 08:26 AM Se apresentares uma mensagem depois da linha boolean Confirm = ConfirmarDados();, a mensagem aparece? Não... Esse é o meu problema... queria apresentar uma mensagem caso o boolean fosse false e não consigo...
mundo Posted November 30, 2012 at 11:23 AM Report #485224 Posted November 30, 2012 at 11:23 AM Estás a fazer a chamada do método dentro da mesma classe?
HappyHippyHippo Posted November 30, 2012 at 11:35 AM Report #485225 Posted November 30, 2012 at 11:35 AM se o código não se encontra a ser executado, o normal é ter havido alguma excepção. uma das hipóteses é o que o @mundo referiu : Estás a fazer a chamada do método dentro da mesma classe? (o que não parece ser porque se fosse esse o caso, o compilador diria algo) o mais normal é acederes a alguma classe não instanciada. verifica se tens alguma mensagem de erro e apresenta qual IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
NEMESISaka Posted November 30, 2012 at 04:00 PM Author Report #485251 Posted November 30, 2012 at 04:00 PM (edited) Estás a fazer a chamada do método dentro da mesma classe? Sim, esta dentro da mesma classe... se o código não se encontra a ser executado, o normal é ter havido alguma excepção. uma das hipóteses é o que o @mundo referiu : (o que não parece ser porque se fosse esse o caso, o compilador diria algo) o mais normal é acederes a alguma classe não instanciada. verifica se tens alguma mensagem de erro e apresenta qual Não tenho nenhuma mensagem de erro, por isso é que estou confuso com isto e não sei se é bug ou erro...E o problema é que com os testes que fiz, o erro ocorre depois de chamar a função ConfirmarDados()... se apresentar uma mensagem antes disso, funciona tudo bem. Mas tudo o que vem depois disso não é executado... Edited November 30, 2012 at 04:02 PM by NEMESISaka
Baderous Posted November 30, 2012 at 05:10 PM Report #485259 Posted November 30, 2012 at 05:10 PM Então o problema está no método confirmarDados.
NEMESISaka Posted November 30, 2012 at 06:04 PM Author Report #485265 Posted November 30, 2012 at 06:04 PM (edited) Então o problema está no método confirmarDados. Já estive a fazer uns testes e sim, o erro esta no método ConfirmarDados...Na parte: String sexo = Sexo.getName(); if (sexo == "M") { boolean sexobool = true; } else { boolean sexobool = false; } Calendar Data = Calendar.getInstance(); String dia = Dia.getName(); Integer diaCalen = Integer.valueOf(dia); String ano = Ano.getName(); Integer anoCalen = Integer.valueOf(ano); Integer mes = Mes.getSelectedIndex(); Integer mesCalen = mes + 1; Data.set(Calendar.DAY_OF_MONTH, diaCalen); Data.set(Calendar.MONTH, mesCalen); Data.set(Calendar.YEAR, anoCalen); // fim dos dados return flag; } Tanto no sexo como na data esta a dar o erro... Poderá ser por ambos os campos serem lidos através de uma combobox? Obrigado Baderous pela ajuda 🙂 Edit: Problema resolvido, para ajudar futuros programadores com o mesmo problema aqui fica a resposta: String sexo = (String)Sexo.getSelectedItem(); boolean sexobool; if (sexo.equals("M")) { sexobool = true; } else { sexobool = false; } Calendar Data = Calendar.getInstance(); String dia = (String)Dia.getSelectedItem(); Integer diaCalen = Integer.valueOf(dia); String ano = (String)Ano.getSelectedItem(); Integer anoCalen = Integer.valueOf(ano); Integer mes = Mes.getSelectedIndex(); Integer mesCalen = mes + 1; Data.set(Calendar.DAY_OF_MONTH, diaCalen); Data.set(Calendar.MONTH, mesCalen); Data.set(Calendar.YEAR, anoCalen); O problema era de eu estar a ler mal os dados das combo boxes, assim editei o codigo metendo: String variavel = (String)variavel.getSelectedItem(); Espero que ajude alguém no futuro... Desde já um grande obrigado a todos pela a ajuda 🙂 Edited November 30, 2012 at 06:18 PM by NEMESISaka
HappyHippyHippo Posted November 30, 2012 at 06:28 PM Report #485266 Posted November 30, 2012 at 06:28 PM tens de aprender a verificar as mensagens de erros ... porque se o problema estava aí de certeza que alguma coisa tinha de aparecer, e muito provavelmente seria no: Integer.valueOf(dia) que estaria a originar a excepção : NumberFormatException algo que deverias ter referido no teu post mas que teimaste em dizer que não aparecia nada : Não tenho nenhuma mensagem de erro, por isso é que estou confuso com isto e não sei se é bug ou erro... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
NEMESISaka Posted November 30, 2012 at 07:21 PM Author Report #485271 Posted November 30, 2012 at 07:21 PM tens de aprender a verificar as mensagens de erros ... porque se o problema estava aí de certeza que alguma coisa tinha de aparecer, e muito provavelmente seria no: Integer.valueOf(dia) que estaria a originar a excepção : NumberFormatException algo que deverias ter referido no teu post mas que teimaste em dizer que não aparecia nada : Mas nao aparecia nenhuma mensagem de erro... e esse Integer.valueOf(dia) esta correcto, pelo menos não me da erro e foi assim que o meu professor me disse para converter as strings para integers... Como o valor vem de uma combobox, a string é sempre numerica, o problema estava mesmo como estava a ser lida tinha de utilizar getSelectedItem(); em vez de getName();
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now