Avatar billede aslan Nybegynder
05. juni 2002 - 15:15 Der er 7 kommentarer og
3 løsninger

Jeg får en NumberFormatException...

Når en bruger laver en søgning vi en form  jeg har lavet og ikke udfylder alle felter i formen får man en NumberFormatException på det felter der er integer...

Er der nogen der kan komme med et forslag til hvordan jeg får løst dette problem??

  void søgning()
    {
              int typeGæst=0;
              int nr = new Integer(gæstNr.getText()).intValue();
              int tlf = new Integer(telefon.getText()).intValue();
              try
                {
                              ResultSet row = hentGaest.søg( nr,
                                              forNavn.getText(),
                                              efterNavn.getText(),
                                              adresse.getText(),
                                              tlf);

                                  while(row.next())
                                  {
                                      felt.append(row.getInt("GAESTENR")+"\n");
                                      felt.append(row.getString("NAVN")+"\n");
                                      felt.append(row.getString("EFTERNAVN")+"\n");
                                      felt.append(row.getString("ADRESSE")+"\n");
                                      felt.append(row.getInt("TLF")+"\n");
                                      felt.append(row.getInt("ANTALRESERVATION")+"\n");

                                  }

                }
              catch(SQLException fejl)
              {
                  System.out.println(fejl);

              }
              catch(NumberFormatException fejl2)
              {
                  System.out.println(fejl2);

              }
    }
Avatar billede prom Nybegynder
05. juni 2002 - 15:24 #1
Put:
int nr = new Integer(gæstNr.getText()).intValue();
int tlf = new Integer(telefon.getText()).intValue();

ind i try-catch blokken, så fanger du den NumberFormatException der opstår.

Prom
Avatar billede prom Nybegynder
05. juni 2002 - 15:26 #2
Hvad der så skal ske når du fanger fejlen, er et designspørgsmål du skal tage stilling til. Skal brugeren have en dialogbox smidt i hovedet, eller...

prom.
Avatar billede soelvpil Nybegynder
05. juni 2002 - 16:44 #3
Du kan enten vælge at returnere en fejlbesked til brugeren, eller stiltiende vedtage, at hvis brugeren ikke indtaster noget, mener han nok 0
Avatar billede aslan Nybegynder
05. juni 2002 - 18:05 #4
Jamen soelvpil det er der problemet ligger jeg kan simpelthen ikke få den til det? Hvis brugeren ikke taster noget skal værdien af feltet være 0, men hvordan??
Avatar billede soelvpil Nybegynder
05. juni 2002 - 20:04 #5
Aha!

String nrTekst = gæstNr.getTekst();
int nr = 0;
if (nrTekst.length()>=0)
  nr = new Integer(nrTekst).intValue();

Dette giver dog stadigvæk en NumberFormatException, hvis der faktisk indtastes noget i feltet, men at det ikke er et tal.

Hvis du i alle fejlsituationer vil have indsat 0, kan du bare sige

String nrTekst = gæstNr.getTekst();
int nr = 0;
try {
  nr = new Integer(nrTekst).intValue();
}
catch (NumberFormaException e) {
  // bør måske lave en System.out?
}
Avatar billede prom Nybegynder
05. juni 2002 - 20:51 #6
Hvis jeg har forstået det rigtigt skal textFeltet udfyldes med 0 hvis der opstår en NumberFormatException. Det fanges i catchblokken.

String nrTekst = gæstNr.getTekst();
int nr = 0;
try {
  nr = new Integer(nrTekst).intValue();
}
catch (NumberFormatException e) {
  gæstNr.setTekst(""+ nr);
}
Avatar billede prom Nybegynder
05. juni 2002 - 20:56 #7
Hvis du bruger et TextField kan du jo også vælge at indsætte 0, når du konstruerer dit TextField:

TextField(String text, int columns)
TextField tf = new TextField("0", antalKolonner);

eller
TextField(String text)
TextField("0")

prom
Avatar billede aslan Nybegynder
05. juni 2002 - 21:36 #8
Ingen af jeres forslag virker .... den er altså mere tricky denne her end man tror...
Avatar billede aslan Nybegynder
05. juni 2002 - 22:31 #9
nu virker det:

    void søgning()
    {

              try
                {


                              String nr=gæstNr.getText();
                              if(nr.length()==0)
                              {
                                  nr="0";
                              }

                              String nyTlf = telefon.getText();
                              if(nyTlf.length()==0)
                              {
                                  nyTlf="0";
                              }

                              ResultSet row = hentGaest.søg
                                              ( new Integer(nr).intValue(),
                                              forNavn.getText(),
                                              efterNavn.getText(),
                                              adresse.getText(),
                                              new Integer(nyTlf).intValue());

                                  while(row.next())
                                  {
                                      felt.append(row.getInt("GAESTENR")+"\n");
                                      felt.append(row.getString("NAVN")+"\n");
                                      felt.append(row.getString("EFTERNAVN")+"\n");
                                      felt.append(row.getString("ADRESSE")+"\n");
                                      felt.append(row.getInt("TLF")+"\n");
                                      felt.append(row.getInt("ANTALRESERVATION")+"\n");

                                  }

                }
              catch(SQLException fejl)
              {
                  System.out.println(fejl);

              }
              catch(NumberFormatException fejl2)
              {
                  System.out.println(fejl2);

              }
    }
Avatar billede aslan Nybegynder
05. juni 2002 - 22:32 #10
5 point til os hver for en god indsats  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester