Hola:
 
Deberías meter el código en tags de programación para que sea más fácil de seguir. Fíjate en donde rellenas x[a]    
Código Java:
Ver originalfor (int a=0;a<c;a++){
   sSQL = "SELECT Semestre FROM programacion ";
   try {
      while(rs.next()){
         sem = rs.getString("Semestre");
         x[a]=x[a]+1;
      }
}
  
Haces un bucle para rellenar los elementos del array. En cada iteración, haces un select de todos los registros de la base de datos (no hay where ninguno) y vas machacando el valor a[x] sucesivamente con los valores leídos, de forma que al final x[a] tendrá el úlitmo valor del select + 1. 
Y así con todos los valores de a. 
¿Dónde imprimes esos valores para ver que son distintos? 
Se bueno.