Gå til innhold

Jeg får NullPointerExeption


Anbefalte innlegg

Jeg holder på med en oppgave i java. Jeg skal skrive ut kjønn på et dyr, jeg får NullPointerExeption som feilmelding.

 

Her er koden som blir merket med feil

 

 public void printSex()
   {
       if((sex[0] != null) || (sex[1] != null)){
           System.out.println("Kjønn:");
           for(int i = 0; i < sex.length; i++) {System.out.println(sex[i]);}
           System.out.println();
       }
       else{System.out.println("Kjønn er ukjent:");}

 

denne linjen blir altså merket med feil... if((sex[0] != null) || (sex[1] != null)){

 

Hva kan være galt?

Lenke til kommentar
Videoannonse
Annonse

Kan det hende at variabelen sex ikke peker til en tabell, men til null?

Bare for diagnostiseringens skyld kan du jo legge til f.eks

if(sex==null){
System.out.println("sex er en nullpeker");
}

Ellers forstår jeg egentlig ikke hva du vil med den if'en. Vil du sjekke at variabelen faktisk peker til en tabell? For da bruker f.eks du if'en jeg har skrevet over(negert seff).

Lenke til kommentar

jeg har to klasser. I den ene klassen kan jeg skrive ut informasjonen, i den andre klassen kan jeg skrive inn gutt, eller jente.

 

 

Den første delen er en del av hovedklassen (dyr). I klassen sau legger jeg til kjønn.

 

public class Sau
{

private String sex;

public Dyr(int age, String name)
{
    sex = null;
   }


                   public String getSex()
{
    return sex;
   }
   public void setSex(String sex)
{
 this.sex = sex;
}

 

Noe slikt...

 

I den andre klassen så er det noe slikt.

 


public class Hoved
{
   private ArrayList<Sau> sauer;
   private String[] sex;
}
   public Hoved()
   {
       sauer = new ArrayList<Sau>();
               
   }
   
     public void addSau(Sau sau){
       sauer.add(sau);
      }  
       public void removeSau(Sau sau){
       sauer.remove(sau);
      }
              
   }
    public void printSex()
  {
      if((sex[0] != null) || (sex[1] != null)){
          System.out.println("Kjønn:");
          for(int i = 0; i < sex.length; i++) {System.out.println(sex[i]);}
          System.out.println();
      }
      else{System.out.println("Kjønn er ukjent:");}

 

 

Noe slikt er kodene...

Endret av NestenUtenkunnskap
Lenke til kommentar

Ueland kom meg i forkjøpet... Altså: Hvor instansierer du String[] sex?

 

 

 

Et annet poeng...

 

Denne er skummel:

 if((sex[0] != null) || (sex[1] != null)){

 

Denne forhindrer IKKE at du kan få null-referanse i for-løkka de. Hvis du feks. har følgende Array:

 

sex[0]->String

sex[1]->Null

sex[2]->String

 

eller

 

sex[0]->Null

sex[1]->String

 

I begge tilfeller vil det ikke være noen String å skrive ut. Følgelig skrives det ut:

"Kjønn:" (eller var det "Kjønn: null"....? Husker ikke nøyaktig.) Det er bedre å skjekke om sex.length>0 før for-løkka, og så sjekke om hvert enkelt element er null mens du ittererer.

Lenke til kommentar

Okay, jeg bare tenker helt nytt nå... Jeg skal lage et program som ser slik ut.

 

2003985334999143076_fs.jpg

 

public class Database
{
  private ArrayList items;

  public void list()
  {
     for(Iterator iter = items.iterator(); iter.hasNext(); )
     {
        Item item = (Item)iter.next();
        item.print();
     }
  }
}

 

public abstract class Items
{
private String title;
private int playingTime;
private boolean gotIt;
private String comment;
public void print()
{
  System.out.print("title: " + title + 
           " (" + playingTime + " mins)");
  if(gotIt) {
     System.out.println("*");
  } else {
    System.out.println();
  }
  System.out.println(" " + comment);
}
}

 

public class CD extends Item
{
private String artist;
private int numberOfTracks;


public void print()
{
   super.print();
  System.out.println("CD " + artist);
  System.out.println(" tracks: " +
                       numberOfTracks);
}

}

 


public class Video extends Item
{
 private String director;



 public void print()
{
    super.print();
   System.out.println("Video " +
               director);
}
}

 

Nå når jeg trykker compile i klassen Database får jeg "cannot find symbol - class array list"

 

Når jeg trykker compile i klassen CD eller Video, får jeg "cannot find symbol"

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...