Hola a todos, Vine al foro para ver si alguien me podia ayudar con este ejercicio en java, recien comienzo a practicar y me tope con este ejercicio me quede estancado

Alguien me puede ayudar?
Grax de antemano
El enunciado del problema es este:
1.Desarrollar un programa que registre los votos que se realizan en un colegio
para la junta directiva. El programa debe registrar el candidato elegido, el sexo y edad del votante.
El programa debe reportar el candidato ganador, y dos reportes de verificación:
•Reporte total de votos por sexo
•Reporte total por edad: Joven, adulto y adulto mayor
•El candidato menos votado
Para estas elecciones se han presentado tres candidatos
Considerar:
•Joven: 18 – 25
•Adulto: 25-40
•Adulto mayor: >40
package trabajounidad1;
import javax.swing.*;
public class TrabajoUnidad1 {
public static void main(String[] args) {
int edad,ch=0,cm=0,joven=0,adulto=0,adultom=0,voto,max=0,min=999999999;
char genero;
do{
edad=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Edad del Votante"));
switch(edad){
case 1:
if(edad>18 && edad<=25){
genero=JOptionPane.showInputDialog("Ingrese Genero del Votante").charAt(0);
if(genero=='M'||genero=='m'){
ch++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}
else{
cm++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}
joven++;
} break;
case 2:
if(edad>25 && edad<=40){
genero=JOptionPane.showInputDialog("Ingrese Genero del Votante").charAt(0);
if(genero=='M'||genero=='m'){
ch++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}else{
cm++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}
}
adulto++;
break;
case 3:
if(edad>40){
genero=JOptionPane.showInputDialog("Ingrese Genero del Votante").charAt(0);
if(genero=='M'||genero=='m'){
ch++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}else{
cm++;
voto=Integer.parseInt(JOptionPane.showInputDialog("Ingrese Candidato preferido\n[1]Candidato 1\n[2]Candidato 2\n[3]Candidato 3 "));
while(voto>max){
max=voto;
}
while(voto<min){
min=voto;
}
}
}
adultom++;
break;
}
}while(edad!=0);
}
}
XD
