2012-01-27 3 views
0

Je suis nouveau en programmation.Obtenir une exception NullPointerException - comment l'enlever?

array [row][col] = line.charAt(col); 

^ce la ligne est là que je suis en train de NullPointerException dans mon code. Comment l'enlever?

Scanner in = null; 
try { 
    in = new Scanner(new FileReader("C:\\Documents and Settings\\UserXP\\My Documents\\src\\file.txt")); 
} catch (FileNotFoundException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 
String line=""; 
ArrayList<String>arrayList=new ArrayList<String>(); 

while((line=in.nextLine())!=null) { 
    arrayList.add(line); 
    char [][] array = new char [2337][]; 
    for (int row = 0; row<arrayList.size(); row++) 
     for(int col = 0; col<line.length(); col++) { 
      array [row][col] = line.charAt(col); 
      System.out.print(""+ array[row][col]); 
     } 
    System.out.println(""); 
} 

//Close the input stream 
in.close(); 
+0

Je ne sais pas comment supprimer cette exception – user1172026

+2

Pourquoi le nombre magique 2337? – adarshr

+2

pls ajouter la trace de la pile à votre question ainsi – fmucar

Répondre

7

Vous n'êtes jamais allouer de la mémoire pour la deuxième dimension de votre tableau:

char [][] array = new char [2337][]; 

Vous donne 2337 char[] s mais ils sont tous nuls.

Vous aurez besoin

array[row] = new char[line.length()]; 

avant que la boucle de colonne.

EDIT (préciser où insérer):

for (int row = 0; row<arrayList.size(); row++) { 
    array[row] = new char[line.length()]; 
    for(int col = 0; col<line.length(); col++) { 
     array [row][col] = line.charAt(col); 
     System.out.print(""+ array[row][col]); 
    } 
} 

Notez aussi, que votre logique apparaît inefficace, comme vous recréer des lignes à chaque fois que vous ajoutez une ligne.

+0

maintenant im obtenir "ligne ne peut pas être résolu en une variable" – user1172026

+0

Exception dans le fil "principal" java.lang.IllegalStateException: Scanner fermé \t à java.util.Scanner.ensureOpen (Source inconnue) \t at java.util.Scanner.findWithinHorizon (source inconnue) \t at java.util.Scanner.nextLine (source inconnue) \t à read_file.main (read_file.java:115) – user1172026

+0

while ((line = in.nextLine())! = Null) {est la ligne – user1172026

Questions connexes