Avatar billede Slettet bruger
01. oktober 2003 - 21:10 Der er 14 kommentarer og
1 løsning

Afgøre nullværdi på en int

Hvorddan kan jeg afgøre, om en int er null?

Dette vil ikke compile:

int minInt;

if (minInt == null)
    // Gør noget ed problemet.....
Avatar billede erikjacobsen Ekspert
01. oktober 2003 - 21:11 #1
En int kan ikke være null. En Integer kan.
Avatar billede Slettet bruger
01. oktober 2003 - 21:14 #2
Hvad er int så, før den bliver initialiseret?
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:14 #3
0
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:15 #4
(og det må være rekorden for det korteste svar !)
Avatar billede Slettet bruger
01. oktober 2003 - 21:15 #5
Den har simpelthen værdien 0?

Takker... svar hvis du vil have 15 points.
Avatar billede Slettet bruger
01. oktober 2003 - 21:15 #6
lol ja.
Avatar billede erikjacobsen Ekspert
01. oktober 2003 - 21:16 #7
Men den er også 0 hvis den har fået værdien 0. Du kan ikke afgøre om
den "lige er lavet", eller har været udsat for en "hård" beregning, der
giver 0.
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:17 #8
Jeg lavede for et par dage side dette lille program til at illustere:

public class Init {
    private static int ci;
    private static double cd;
    private static boolean cb;
    private static String cs;
    private int ii;
    private double id;
    private boolean ib;
    private String is;
    public void print() {
      int ai;
      double ad;
      boolean ab;
      String as;
      System.out.println(ci);
      System.out.println(cd);
      System.out.println(cb);
      System.out.println(cs);
      System.out.println(ci);
      System.out.println(id);
      System.out.println(ib);
      System.out.println(is);
      // these outcommented gives compile errors
      //System.out.println(ai);
      //System.out.println(ad);
      //System.out.println(ab);
      //System.out.println(as);
    }
    private static void main(String[] args) {
        Init test = new Init();
        test.print();
    }
}
Avatar billede Slettet bruger
01. oktober 2003 - 21:19 #9
Jeg stiller et spørgsmål om en int, og du har et par dage i forvejen simpelthen skrevet et program, der illustrerer det problem, jeg spørger til.

Det inponerer mig på et eller andet plan. Det må jeg altså sige.

Er der en af jer, der vil have points, ellers skal jeg selv lukke?
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:20 #10
Hvis f.eks. din integer "skal" have værdier 1..N så er default
værdien 0 god nok at teste på.

Hvis den "skal" have værdier 0..N så kan di f.eks. initialisere den
til -1;

int minInt = -1;

og teste på -1.

Hvis den kan antage alle værdier, så er der ikke noget at gøre. Lav evt.
en boolean som fortælle rom værdien af int'en er valid.
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:20 #11
lad gå
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:21 #12
Det er ikke så mystisk.

Der var en anden som stillede et tilsvarende spørgsmål for et par dage siden !
Avatar billede Slettet bruger
01. oktober 2003 - 21:23 #13
det er en EJB entety bean, der smider den i hovedet på mig.

Problemet er, at den integer, den representerer i databasen noglegange er en nullværdi i databasen, og det giver en RemoteException/NullpointerException. Så jeg skal have testet på den, får den bliver returnerer fra bønnen.

Den repræsenterer et årstal, og jeg tror jeg tager chancen, at ingen biler er af årgang "0" ;o)
Avatar billede Slettet bruger
01. oktober 2003 - 21:25 #14
Jeg kunne jo også søge efter det, før jeg opretter spm. Det skal jeg nok være opmærksom på fremover.

Takker for hjælpen erikjacobsen og arne_v!
Avatar billede arne_v Ekspert
01. oktober 2003 - 21:25 #15
Ikke da medmindre der skal romerske stridsvogne i databasen !

:-)
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