When I run this code, for some reason when it hits test10 to be added into the Array sort, the addListing method ignores the for loop and just skips to the bottom. I am curious why the for loop runs for test2.addListing(test); and test2.addListing(test9); but not for the one after.
import java.util.Scanner;
public class TestListings {
public static void main(String[] args) {
StudentListings test = new StudentListings();
StudentListings test9 = new StudentListings();
StudentListings test10 = new StudentListings();
test.input();
test9.input();
test10.input();
Scanner sc = new Scanner(System.in);
int aSize = 0;
System.out.print("Enter Array Size: ");
aSize = Integer.parseInt(sc.nextLine());
ArraySort test2 = new ArraySort(aSize);
test2.addListing(test);
test2.addListing(test9);
test2.addListing(test10);
test2.showAllListings();
}
}
This is the method written, and it runs for the first run through, next = 0; intially, but the 3rd time (in test10) it just looks at the line and skips it.
public class ArraySort
{
  private StudentListings[] data;
  private int size = 0;
private int next = 0;
public ArraySort() 
{
  data = new StudentListings[size];
  size = 0;
  next = 0;
}
public ArraySort(int ArraySize)
{
  size = ArraySize;
  data = new StudentListings[size];
  next = 0;
}
public void addListing(StudentListings newListing)
{
  System.out.print(next);
  for(i = next - 1; i <= 0; i--)
  {
     try { 
     if (newListing.compareTo(data[i].getLName()) < 0)
     {
        data[i+1] = data[i].deepCopy();
     }
     else
     {
        data[i+1] = newListing;
       next++;
        break;
     }
     }
     catch(ArrayIndexOutOfBoundsException | NullPointerException exception) 
    {
     int x = i + 1;
     data[x] = newListing;
     next++;
     break;
     }
    }      
    System.out.print(next);
  } 
   public void showAllListings()
 {
     for(int i = 0; i < next; i++)
     {
     System.out.println((i + 1) + ". " + data[i]);
     }
  }
} 
This is the class that is getting created to be inserted into the array.
    import java.util.Scanner;
   public class StudentListings {
    private String firstName;
    private String lastName;
    private int id;
    private double gpa;
   public StudentListings() 
   {
    firstName = "";
    lastName = "";
    id = 0;
    gpa = 0.0;
    }
    public StudentListings(String firstName, String lastName, int id, 
    double gpa) 
    {
     this.firstName = firstName;
     this.lastName = lastName;
     this.id = id;
     this.gpa = gpa;
     }  
     public void setName(String firstName, String lastName) 
     {
      this.firstName = firstName;
      this.lastName = lastName;
      }
     public String getName() 
     {
     return firstName + " " + lastName;
     }
     public void setId(int id) 
     {
     this.id = id;
      }
     public int getId() 
     {
     return id;
     }
     public void setGpa(double gpa) 
     {
     this.gpa = gpa;
     }
     public double getGpa() 
     {
      return gpa;
     }
     public String getLName()
    {
     return lastName;
     }
    public void input()
     {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter First Name: ");
    this.firstName = sc.nextLine();
    System.out.print("Enter Last Name: ");
    this.lastName = sc.nextLine();
    System.out.print("Enter Student ID: ");
    this.id = sc.nextInt();
    System.out.print("Enter Student GPA: ");
    this.gpa = Double.parseDouble(sc.next());
    }
    public String toString()
    {
    return "Last Name: " + lastName + " First Name: " + firstName + " ID: 
    " + id + " GPA: " + gpa;
    }
    public StudentListings deepCopy() 
    {
    StudentListings clone = new StudentListings(firstName, lastName, id, 
    gpa);
    return clone;
    }
    public int compareTo(String targetKey) 
    {
    return(lastName.compareTo(targetKey));
    }
    }
 
     
    