Ajuda em código escolar

Pessoal, o professor mandou a gente fazer um código para colocar sintomas, definir a probabilidade e comparar, mas meu código está dando loop, Ele pergunta os sintomas, a probabilidade e quando volta, ele pergunta de novo, e devia voltar para o while, o erro creio que seja na função Definir();, segue o Código:
package doctorstranger;

import java.util.Scanner;

public class DoctorStranger {

public static void Definir(String[] doenca,String[] sintomas,double[] [] prob, int tamsintomas, int tamdoenca){
	Scanner sc = new Scanner(System.in);
	for(int i = 0;i < tamdoenca;i++){
            System.out.println("Informe o nome da sua doença!");
            doenca[i] = sc.next();
            }
            for(int j = 0;j < tamsintomas;j++){
                System.out.println("Informe os nomes dos sintomas!");
                sintomas[0+j] = sc.next();
        }
	for(int i = 0;i < tamdoenca;i++){
		for(int j = 0;j < tamsintomas;j++){
			System.out.println("Qual a probabilidade de "+ sintomas[j]+" para a "+doenca[i]+"?");
			prob [0+i] [0+j] = sc.nextDouble()/100;
		}
	}
            
}
    public static void DefPaciente(int tamsintomas, int tamdoenca, double prob[] [], String sintomas[], String doenca[]){
        Scanner sc = new Scanner(System.in);
        System.out.println("========================================================================");
        double [] [] probpaciente = new double[1] [tamsintomas];
        int total = 100;
            for(int j = 0;j < tamsintomas; j++){
            System.out.println("Informe com que frequência você tem "+sintomas[j]+":");
            probpaciente [0] [j] = sc.nextDouble();
            }
        for(int i = 0;i < tamdoenca;i++){
            for(int j = 0; j < tamsintomas;j++){
                if(probpaciente[0] [j] >= prob[i] [j]){
                    total = total;
                }
                else {
                    total = total - (100 / tamsintomas);
                }
                System.out.println("Você tem "+total+"% chance de ter " +doenca[i]);
            }
        }
        
}



public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.println("----------------------\nDefina o número de doenças!\n----------------------");
                                int tamdoenca = sc.nextInt();
                                System.out.println("----------------------\nDefina o número de sintomas de cada doença!\n----------------------");
                                int tamsintomas = sc.nextInt();
                                String doenca[]= new String [tamdoenca];
                                String sintomas[]= new String [tamsintomas];
                                double prob[] [] = new double [tamdoenca] [tamsintomas];
            System.out.println("Informe");
                      int ler = sc.nextInt();
                            while(ler != 0){
                            switch(ler){
                              case 1:
                                Definir(doenca,sintomas,prob,tamsintomas,tamdoenca);
                                break;
                              case 2:
                                  DefPaciente(tamsintomas, tamdoenca, prob, sintomas, doenca);
                                  break;
                              default:
        }
    }                          
}                      

}

O valor da variável ‘ler’ nunca está sendo alterada.
Você pode colocar o código abaixo no final do while.

System.out.println("Informe");
ler = sc.nextInt(); 

Logo após sair do switch.
Assim você pode alterar ovalor da variável ‘ler’.