2010-10-31 9 views
-3

dupliquées possible:
Java null pointer exceptions - don't understand why…Fixation null exceptions de pointeur en Java (avec ArrayList)

MOVIE.JAVA

package javaPractical.week3; 

import javax.swing.*; 

public class Movie { 
// private attributes 
private String title; 
private String movieURL; 
private String year; 
private String genre; 
private String actor; 

// constructor 
Movie(String t, String u, String y, String g, String a) { 
    this.title = t; 
    this.movieURL = u; 
    this.year = y; 
    this.genre = g; 
    this.actor = a; 

} 

// getters and setters 
public void setTitle(String t) { 
    this.title = t; 
} 

public String getTitle() { 
    return this.title; 
} 

public void set_url(String a) { 
    this.movieURL = a; 
} 

public String get_url() { 
    return this.movieURL; 
} 

public void setYear(String y) { 
    this.year = y; 
} 

public String getYear() { 
    return this.year; 
} 

public void setGenre(String g) { 
    this.genre = g; 
} 

public String getGenre() { 
    return this.genre; 
} 

public void setActor(String a) { 
    this.actor = a; 
} 

public String getActor() { 
    return this.actor; 
} 

// output movie details 
public String toString() { 
    return ("Title: " + this.title + "\nURL: " + this.movieURL + "\nYear: " 
      + this.year + "\nGenre: " + this.genre + "\nActor: " + this.actor); 
} 

public static void main(String[] args) { 
    // testing Movie class 
    Movie Movie1 = new Movie("Spiderman", "www.", "2002", "Action", 
      "Tobey M"); 

    JOptionPane.showMessageDialog(null, Movie1.toString()); 
    // testing MovieList class 

} 
} 

MOVIELIST.JAVA

package javaPractical.week3; 

import javax.swing.*; 
import java.util.ArrayList; 

public class MovieList1 { 

private static ArrayList<Movie> myFavouriteMovies = new ArrayList(); 
private static int NUM_OF_MOVIES = 10; 
private int numberOfMovies = 0; 
private int index = 0; 

public MovieList1() { 
    this.myFavouriteMovies = null; 
    this.numberOfMovies = 0; 
    this.index = 0; 
} 

public int getNumberOfMovies() { 
    return this.myFavouriteMovies.size(); 
} 

public boolean isEmpty() { 
    if (this.myFavouriteMovies.isEmpty()) { 
     return true; 

    } else 
     return false; 

} 

public static void main(String[] args) { 
    MovieList1 List = new MovieList1(); 
    String titleADD; 
    String movieURLADD; 
    String yearADD; 
    String genreADD; 
    String actorADD; 

    titleADD = JOptionPane.showInputDialog(null, "Enter title:"); 
    movieURLADD = JOptionPane.showInputDialog(null, "Enter URL:"); 
    yearADD = JOptionPane.showInputDialog(null, "Enter year:"); 
    genreADD = JOptionPane.showInputDialog(null, "Enter genre:"); 
    actorADD = JOptionPane.showInputDialog(null, "Enter actor:"); 

    Movie TempMovie = new Movie(titleADD, movieURLADD, yearADD, genreADD, 
      actorADD); 

    // crashes here 
    myFavouriteMovies.add(TempMovie); 

} 
} 
+1

Et votre question est? Voir http://tinyurl.com/so-hints –

+0

Avez-vous une pile disponible? Il sera utile de publier la trace de pile afin que nous puissions vous dire comment les lire afin que vous puissiez corriger ce problème s'il se reproduit. –

+0

@ user492837: Ajouter StackTrace, plz. –

Répondre

1

Bien sûr, il se bloque - vous l'avez défini sur null.

Pourquoi diable n'avez-vous pas tenu compte du conseil parfaitement bien reçu ici?

Java null pointer exceptions - don't understand why

Vous perdez le temps de tout le monde sur une question triviale. Je vote pour fermer.

Essayez ceci - il est toujours odieux, mais il fonctionne:

package javaPractical.week3; 
import javax.swing.*; 
import java.util.ArrayList; 
import java.util.List; 

public class MovieList1 
{ 

    private static int NUM_OF_MOVIES = 10; 

    private List<Movie> myFavouriteMovies; 
    private int numberOfMovies = 0; 
    private int index = 0; 

    public MovieList1() 
    { 
     this.myFavouriteMovies = new ArrayList<Movie>(); 
     this.numberOfMovies = 0; 
     this.index = 0; 
    } 

    public int getNumberOfMovies() 
    { 
     return this.myFavouriteMovies.size(); 
    } 

    public boolean isEmpty() 
    { 
     return this.myFavouriteMovies.isEmpty(); 
    } 

    public void add(Movie movie) 
    { 
     this.myFavouriteMovies.add(movie); 
    } 

    @Override 
    public String toString() 
    { 
     return "MovieList1{" + 
       "myFavouriteMovies=" + myFavouriteMovies + 
       '}'; 
    } 

    public static void main(String[] args) 
    { 
     MovieList1 movieList = new MovieList1(); 
     String titleADD; 
     String movieURLADD; 
     String yearADD; 
     String genreADD; 
     String actorADD; 

     titleADD = JOptionPane.showInputDialog(null, "Enter title:"); 
     movieURLADD = JOptionPane.showInputDialog(null, "Enter URL:"); 
     yearADD = JOptionPane.showInputDialog(null, "Enter year:"); 
     genreADD = JOptionPane.showInputDialog(null, "Enter genre:"); 
     actorADD = JOptionPane.showInputDialog(null, "Enter actor:"); 

     Movie TempMovie = new Movie(titleADD, movieURLADD, yearADD, genreADD, 
            actorADD); 

     // crashes here 
     movieList.add(TempMovie); 
     System.out.println(movieList); 

    } 
} 

class Movie 
{ 
    private String title; 
    private String url; 
    private String year; 
    private String genre; 
    private String actor; 

    Movie(String title, String url, String year, String genre, String actor) 
    { 
     this.title = title; 
     this.url = url; 
     this.year = year; 
     this.genre = genre; 
     this.actor = actor; 
    } 

    @Override 
    public String toString() 
    { 
     return "Movie{" + 
       "title='" + title + '\'' + 
       ", url='" + url + '\'' + 
       ", year='" + year + '\'' + 
       ", genre='" + genre + '\'' + 
       ", actor='" + actor + '\'' + 
       '}'; 
    } 
} 
+0

Merci beaucoup duffymo (et autres), je l'ai corrigé et je comprends pourquoi aussi. – user492837

2

Vous avez défini l'attribut statique private static ArrayList<Movie> myFavouriteMovies = new ArrayList();

Mais dans le constructeur vous assignez la valeur nulle. Après cela, vous appelez des appels comme myFavouriteMovies.size() qui provoque NullPointerException

public MovieList1() { 
    this.myFavouriteMovies = null; 
    this.numberOfMovies = 0; 
    this.index = 0; 
} 
+0

+1, Bonne prise, tu avais de meilleurs yeux que moi. –