Daniel
Daniel

Reputation: 21

Null Pointer Exception / Arrays

I get a NPE in the 2 lines I commented "NPE HERE"

import javax.swing.*;
import java.awt.*;
public class Project1{
static TextArea preSort, postSort;
static String[] Array = new String[20];


  public static void main(String[] args) {
  Project1GUI myFrame = new Project1GUI("Project1GUI");
  readStringFromFile("filename.txt");
  enterFirst(Array); // NPE HERE
  selectionSort(Array);
  enterSecond(Array);

}
public static void enterFirst (String[] name){ // NPE HERE
     for(int i=0;i<name.length&&name[i]!=null;i++)
        preSort.append(name[i]+" ");
}
public static void enterSecond (String[] name){
     for(int i=0;i<name.length&&name[i]!=null;i++)
         postSort.append(name[i]+" ");
}
public static void selectionSort (String[] name){
   for(int i=0; i<name.length-1&&name[i]!=null;i++){
       int indexLowest=i;
       for (int j=i+1; j<name.length&&name[j]!=null;j++)
           if(name[j]<name[indexLowest])
               indexLowest=j;
       if(name[indexLowest]!=name[i]){
           String temp = name[indexLowest];
           name[indexLowest]=name[i];
           name[i]=temp;
       }//if
   }//for
       }//method selectionSort

public static boolean isOkay (String name){

   char[] chars = name.toCharArray();
   for(int i=0; i<chars.length; i++){
       if(!Character.isLetter(chars[i])){
           return false;
       }
   }
   return true;    
} //isOkay   
public static void readStringFromFile(String fileName){
  TextFileInput inFile = new TextFileInput(fileName);
  String line;
  line = inFile.readLine();
  int index = 0;
  while (line!=null) {
      if(isOkay(line))Array[index++]=line;
      else System.out.println(line);
      line = inFile.readLine();
  }//while

      inFile.close();
} 

} //Project1

I have 2 other classes in my directory, TextFileInput and my GUI class (do you guys need to see the code there too?). I probably have more mistakes in my code, not sure as I'm still not very familiar with Java and am trying my best to learn. Any other advice will be appreciated.

Anyways, what is causing the NPE? From my understanding, my string array has null values that cause a NPE when I try to access the array with name[i]. I've tried filling up the rest of my array with dummies (strings with value of "antinull") but that didn't solve anything and would clearly not be an elegant solution even if it was one.

I just need to have a project1 class and a GUI class. The objective is to take in a file with strings, check if a string is all letters, and send the actual words to a text area in the GUI. Then sort by size and send the ordered version to the other text area. The strings that aren't words are sent to be output to the console. Project1 should have a constructor which takes one string parameter.

Upvotes: 0

Views: 108

Answers (2)

Shababb Karim
Shababb Karim

Reputation: 3703

I don't think you are getting a Null Pointer Error on calling enterFirst(Array). The loop shouldn't even execute since the first value of Array is a null. But you might get a Null Pointer Error because preSort variable doesn't refer to any object.

Try:

static TextArea preSort = new TextArea(5, 20); and

static TextArea postSort = new TextArea(5, 20);

Upvotes: 0

t0mppa
t0mppa

Reputation: 4078

When you call preSort.append(...), you're calling a method from a variable (preSort), which is not initialized and thus null, this causes a NullPointerException. If you initialize preSort in your main method for instance, things will work better.

You should also look into indenting your code properly and use proper Java naming standards. Variables should be camelCased, not starting with a capital letter.

Upvotes: 1

Related Questions