Não Consigo Retornar o Resultado de uma Expressão

Não Consigo Retornar o Resultado de uma Expressão que eu coloquei em um método, ele sempre retorna 0 porque?

public static void DO() {
int opcao, p_contratadas, p_desligadas, total_func;
double calc, result;

    try {
        opcao = Integer.parseInt(JOptionPane.showInputDialog("1.Calcular turnover(Admissões e Desligamentos)\n2.Calcular turnover(Desligamentos)\n3.Voltar\n4.Sair"));

        switch (opcao) {
            case 1:/*caso usuário digite "1" terá acesso ao calculo do turnover(Admissões e Desligamentos)*/

                while (true) {//laço para enquanto as condições forem verdadeiras
                    try {
                        p_contratadas = Integer.parseInt(JOptionPane.showInputDialog("Informe o total de pessoas contratadas:"));
                        if (p_contratadas < 0) {//excessão para números negativos localizada na classe "NegativoException".
                            throw new NegativoException("Somente valores inteiros positivos!");
                        }
                        p_desligadas = Integer.parseInt(JOptionPane.showInputDialog("Informe o total de pessoas Desligadas:"));
                        if (p_contratadas < 0) {//excessão para números negativos localizada na classe "NegativoException".
                            throw new NegativoException("Somente valores inteiros positivos!");
                        }
                        total_func = Integer.parseInt(JOptionPane.showInputDialog("Informe o total de funcionários disponíveis:"));
                        if (p_contratadas < 0) {//excessão para números negativos localizada na classe "NegativoException".
                            throw new NegativoException("Somente valores inteiros positivos!");
                        }
                        /*Calculo turnover (Admissões e Desligamentos)*/
                        calc = (p_contratadas + p_desligadas) / 2;
                        result = calc / (total_func * 100);
                        JOptionPane.showMessageDialog(null, "Resultado: " + NumberFormat.getNumberInstance().format(result));
                        DO();
                        break;
                    } catch (NumberFormatException e) {//excessão caso o usuario digite uma String ou deixe o campo em branco
                        JOptionPane.showMessageDialog(null, "Somente valores inteiros positivos!", "Operação inválida!", 0);
                    } catch (NegativoException e2) {//excessão para números negativos
                        JOptionPane.showMessageDialog(null, e2.getMessage());//Método da classe "NegativoException" que retorna a excessão para números negativos.
                    }
                }

Tente sbustituir

calc = (p_contratadas + p_desligadas) / 2; result = calc / (total_func * 100);

por

calc = double ( (p_contratadas + p_desligadas) / 2) ; result = double (calc / (total_func * 100));