This is Main.java
public class Main extends Application {
    RadioButton chkSort;
    RadioButton chkOrder;
    public static void main(String[] args) {
        launch(args);
    }
    public static Comparator<Student> studentIDComparator = new Comparator<Student>() { 
         public int compare(Student std1, Student std2) { 
         String id1 = std1.getID();
         String id2 = std2.getID();
         return id1.compareToIgnoreCase(id2);
         } 
        }; 
    public static Comparator<Student> studentNameComparator = new Comparator<Student>() { 
         public int compare(Student std1, Student std2) { 
         String name1 = std1.getName();
         String name2 = std2.getName();
         return name1.compareToIgnoreCase(name2);
         } 
        };
    public static Comparator<Student> studentLastnameComparator = new Comparator<Student>() { 
         public int compare(Student std1, Student std2) { 
         String last1 = std1.getLastName();
         String last2 = std2.getLastName();
         //ascending order 
         return last1.compareToIgnoreCase(last2);
         }
         //return fruitName2.compareTo(fruitName1); //descending order 
         };
    public static Comparator<Student> studentGPAComparator = new Comparator<Student>() { 
         public int compare(Student std1, Student std2) { 
         String gpa1 = std1.getGPA();
         String gpa2 = std2.getGPA(); 
         return gpa1.compareTo(gpa2);
         }
        };
    @Override   
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("Student Sorting");
        SplitPane splitPane = new SplitPane();
        GridPane grid1 = new GridPane();
        GridPane grid2 = new GridPane();
        grid1.setAlignment(Pos.TOP_LEFT);
        grid1.setVgap(10);
        grid1.setHgap(10);
        grid1.setPadding(new Insets(25,25,25,25));
        grid2.setPadding(new Insets(25,25,25,25));
        Scene scene = new Scene(splitPane, 700, 500);
        primaryStage.setScene(scene);
        Text title = new Text("Student Sorting");
        title.setFont(Font.font("Comic Sans MS", FontWeight.BOLD, 20));
        Text sortBy = new Text("Sort by :");
        sortBy.setFont(Font.font("Calibri", FontWeight.BOLD, 14));
        final ToggleGroup toSelect = new ToggleGroup();
        final ToggleGroup toOrder = new ToggleGroup();
        RadioButton idBtn = new RadioButton("ID");
        idBtn.setToggleGroup(toSelect);
        RadioButton nameBtn = new RadioButton("Name");
        nameBtn.setToggleGroup(toSelect);
        RadioButton lastNameBtn = new RadioButton("Last Name");
        lastNameBtn.setToggleGroup(toSelect);
        RadioButton gpaBtn = new RadioButton("GPA");
        gpaBtn.setToggleGroup(toSelect);
        Text order = new Text("Order :");
        order.setFont(Font.font("Calibri", FontWeight.BOLD, 14));
        RadioButton ascBtn = new RadioButton("Ascending");
        ascBtn.setToggleGroup(toOrder);
        ascBtn.setUserData("asc");
        RadioButton desBtn = new RadioButton("Descending");
        desBtn.setToggleGroup(toOrder);
        desBtn.setUserData("des");
        Button start = new Button("Sort");
        start.setPrefSize(170, 20);
        final TextArea text = new TextArea();
        text.setMinSize(500, 400);
        grid1.add(title, 0, 0);
        grid1.add(sortBy, 0, 2);
        grid1.add(idBtn, 0, 3);
        grid1.add(nameBtn, 0, 4);
        grid1.add(lastNameBtn, 0, 5);
        grid1.add(gpaBtn, 0, 6);
        grid1.add(order, 0, 8);
        grid1.add(ascBtn, 0, 9);
        grid1.add(desBtn, 0, 10);
        grid1.add(start, 0, 13);
        grid2.add(text, 2, 2);
        splitPane.getItems().addAll(grid1, grid2);
        splitPane.setDividerPositions(0.3);
        toSelect.selectedToggleProperty().addListener(new ChangeListener<Toggle> (){
            @Override
            public void changed(ObservableValue<? extends Toggle> value,
                    Toggle t1, Toggle t2) {
                chkSort = (RadioButton) t2.getToggleGroup().getSelectedToggle();
            }           
        });
        toOrder.selectedToggleProperty().addListener(new ChangeListener<Toggle> (){
            @Override
            public void changed(ObservableValue<? extends Toggle> value,
                    Toggle t1, Toggle t2) {
                chkOrder = (RadioButton) t2.getToggleGroup().getSelectedToggle();   
            }
        });
        start.setOnAction(new EventHandler<ActionEvent>(){
            @Override
            public void handle(ActionEvent arg0) {
                String temp =text.getText().toString();
                String[] splitLine = temp.split("\n");
                Student[] stdData = new Student[splitLine.length];
                for(int i=0; i<splitLine.length; i++){
                    String[] stdDataStr = splitLine[i].split(" ");
                    if(stdDataStr[i].length() <4 || stdDataStr[i].equals(null)){
                        text.setText("Invalid input");
                        break;
                    }
                    else {
                        stdData[i].setID(stdDataStr[0]);
                        stdData[i].setName(stdDataStr[1]);
                        stdData[i].setLastName(stdDataStr[2]);
                        stdData[i].setGPA(stdDataStr[3]);
                    }
                }   
                if(chkSort.getText().toString().equals("ID")){
                    if(chkOrder.getText().toString().equals("Ascending")){
                        Student.sort(stdData,studentIDComparator , true);
                    }
                    else{
                        Student.sort(stdData, studentIDComparator, false);
                    }
                }
                else if(chkSort.getText().toString().equals("Name")){
                    if(chkOrder.getText().toString().equals("Ascending")){
                        Student.sort(stdData, studentNameComparator, true);
                    }
                    else{
                        Student.sort(stdData, studentNameComparator, false);
                    }
                }
                else if(chkSort.getText().toString().equals("Last Name")){
                    if(chkOrder.getText().toString().equals("Ascending")){
                        Student.sort(stdData, studentLastnameComparator, true);
                    }
                    else{
                        Student.sort(stdData, studentLastnameComparator, false);
                    }
                }
                else if(chkSort.getText().toString().equals("GPA")){
                    if(chkOrder.getText().toString().equals("Ascending")){
                        Student.sort(stdData, studentGPAComparator, true);
                    }
                    else{
                        Student.sort(stdData, studentGPAComparator, false);
                    }
                }
                for(int i=0 ; i<stdData.length; i++){
                    text.setText(stdData[i].getID()+" "+stdData[i].getName()+" "+stdData[i].getLastName()+" "+stdData[i].getGPA());
                }
            }       
        });
        primaryStage.show();        
    }   
}
This is Student.java
    public class Student {
    private String stdID;
    private String stdName;
    private String stdLastName;
    private String stdGPA;
    public Student(String id, String name, String lastName, String gpa) { 
         super(); 
         this.stdID = id;
         this.stdName = name;
         this.stdLastName = lastName;
         this.stdGPA = gpa;
        } 
    public String getID() {return stdID;} 
    public void setID(String id) { this.stdID =id; } 
    public String getName() {return stdName;} 
    public void setName(String name) { this.stdName= name; }
    public String getLastName() {return stdLastName;} 
    public void setLastName(String lastName) { this.stdLastName = lastName; }
    public String getGPA() {return stdGPA;} 
    public void setGPA(String gpa) { this.stdGPA = gpa; }
    public static void sort(Student[] std, Comparator<Student> c, boolean asc){  
        Student tmp; 
        for (int i=0; i<std.length-1;i++){ 
            for(int j=i+1;j<std.length;j++) 
                if((c.compare(std[i],std[j]) >0 && asc==true) ||(c.compare(std[i],std[j]) <0 && asc==false)) { 
                    tmp = std[i]; std[i] = std[j]; std[j] = tmp; 
                } 
         } 
    }
}
This is where NullPointerException appear
else {
stdData[i].setID(stdDataStr[0]);
stdData[i].setName(stdDataStr[1]);
stdData[i].setLastName(stdDataStr[2]);
stdData[i].setGPA(stdDataStr[3]);   
}
this is my java src then when i try to run i get NullPointerException when it try to setID, setName, setLastName and setGPA what should i do?
Thanks all
 
     
    