Compara dos fechas

Hola, me dejaron este problema "17.-Escribir un programa que reciba 2 fechas, y presente la diferencia entre ellas(días, mes y año)"

Me podrían dar sugerencias u opiniones les agradezco mucho por su tiempo..
.
Gracias

Este el código:

package proyecto17_unidad1;

import java.text.DateFormat;
import java.util.Date;

public class Proyecto17_Unidad1 {
public void restar_fecha() {

String fechaInicio = "22/04/2016";
String fechaActual = "09/03/2017";
Date date = new Date();
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
fechaActual = df.format(date);
String[] aFechaIng = fechaInicio.split("/");
Integer diaInicio = Integer.parseInt(aFechaIng[0]);
Integer mesInicio = Integer.parseInt(aFechaIng[1]);
Integer añoInicio = Integer.parseInt(aFechaIng[2]);

String[] aFecha = fechaActual.split("/");
Integer diaActual = Integer.parseInt(aFecha[0]);
Integer mesActual = Integer.parseInt(aFecha[1]);
Integer añoActual = Integer.parseInt(aFecha[2]);

System.out.println(diaActual);
System.out.println(mesActual);
System.out.println(añoActual);
int b = 0;
int dias = 0;
int mes = 0;
int años = 0;
int meses = 0;
mes = mesInicio - 1;
if (mes == 2) {
if ((añoActual % 4 == 0) && ((añoActual % 100 != 0) || (añoActual % 400 == 0))) {
b = 29;
} else {
b = 28;
}
} else if (mes <= 7) {
if (mes == 0) {
b = 31;
} else if (mes % 2 == 0) {
b = 30;
} else {
b = 31;
}
} else if (mes > 7) {
if (mes % 2 == 0) {
b = 31;
} else {
b = 30;
}
}
if ((añoInicio > añoActual) || (añoInicio == añoActual && mesInicio > mesActual)
|| (añoInicio == añoActual && mesInicio == mesActual && diaInicio > diaActual)) {
System.out.println("La fecha de inicio debe ser anterior a la fecha Actual");
} else {
if (mesInicio <= mesActual) {
años = añoActual - añoInicio;
if (diaInicio <= diaActual) {
meses = mesActual - mesInicio;
dias = b - (diaInicio - diaActual);
} else {
if (mesActual == mesInicio) {
años = años - 1;
}
meses = (mesActual - mesInicio - 1 + 12) % 12;
dias = b - (diaInicio - diaActual);
}
} else {
años = añoActual - añoInicio - 1;
System.out.println(años);
if (diaInicio > diaActual) {
meses = mesActual - mesInicio - 1 + 12;
dias = b - (diaInicio - diaActual);
} else {
meses = mesActual - mesInicio + 12;
dias = diaActual - diaInicio;
}
}
}

System.out.println("Años: " + años);
System.out.println("Meses: " + meses);
System.out.println("Días: " + dias);

}

public static void main(String[] args) {
new restar_fechas().restar_fecha();
}
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Para mi no está claro el problema

Sería bueno que pusieras unos ejemplos de la entrada y salida esperada, si a mi me preguntan cual es la diferencia entre dos fechas, yo siempre respondo en días, ya que los días que tiene un mes es variable.

Imagen de ezamudio

fechas en java 8

En java 8 ya tienes las operaciones para calcular intervalos entre dos fechas. Solamente necesitas crear los dos objetos y obtener el intervalo. Para crearlos puedes utilizar un parser de los que ya vienen en el JDK para convertir cadenas en fecha, siempre y cuando tengan el formato correcto.