Cita: while(start.before(end) || start.equals(end)){
if(start.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY &&
start.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){
dias++;
}
start.add(Calendar.DATE,1);
}
Está bastante claro que al llamar a getDiasHabiles estás sumando un día a uno de los valores.
Lo que haces es recorrer las dos fechas incrementando una de ellas hasta que son iguales. Así que cuando vas a ver las semanas, estás comparando el mismo número.
Échale un ojo a los ámbitos de variables
http://www.davidmarco.es/articulo/am...iables-en-java
Para solucionar el problema, o creas otro Calendar que sea el que modifiques, o calculas ese dato con las funciones que te da Calendar, pero sin modificar el objeto.