IF não funciona depois do while

Opa galera foi mal por incomodar vocês, tem um problema no meu código que sozinho eu não conseguir resolver:
lá vai.

eu fiz do while e depois da condição while pra fechar o do, eu coloquei vários ifs e a impressão nos ifs
Essa porra não quer imprimir nada
Ela termina o programa no while da condição do DO

[code]import javax.swing.JOptionPane;

public class Reclamacoes
{
public static void main (String args[])
{
int prob, contInst = 0, contInstIF = 0, contInstSS = 0, contInstME = 0, cont = 0, reclama = 0, saida, aux = 0;
String instituição;
double porcento;

	//* contProb = Contagem dos problemas
	//* contInst = Contagem das instituições
	//* menorRec = Menor número de reclamações
		
	do
	{
		instituição = JOptionPane.showInputDialog(null, "Escolha uma instituição: "+
												  "\n A Operadoras de Telefonia Celular."+
												  "\n B Lojas de Móveis e Eletrodomésticos."+
												  "\n C Empresas de Seguros/Planos de Saúde."+
												  "\n D Bancos e Instituições Financeiras.").toUpperCase();
		char cod = instituição.charAt(0);

		switch(cod)
		{
			case 'A': 
		
				contInst = contInst + 1;
				break;

			case 'B': 
			
				contInstME = contInstME + 1;
				break;

			case 'C': 
				
			   	contInstSS = contInstSS + 1;
				break;

			case 'D': 
			
				contInstIF = contInstIF + 1;
				break;

			default:
				JOptionPane.showMessageDialog(null,"Essa opção para instituição é inexistente.");
		
		}

		prob = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o tipo de reclamação: "+
															  "\n 1 Demora no atendimento."+
															  "\n 2 Não conseguiu efetuar cancelamento de serviço."+
															  "\n 3 Dificuldade em contatar um atendente."+
															  "\n 4 Opções de difícil entendimento."+
															  "\n 5 Não conseguiu realizar a operação desejada."));
		if (prob == 1)
		{
			cont = cont+1;
		}
		
		if (prob == 2)
		{
			cont = cont+1;
			reclama = reclama+1;
		}
		
		if (prob == 3)
		{
			cont = cont+1;
		}
		
		if (prob == 4)
		{
			cont = cont+1;
		}
		
		if (prob == 5)
		{
			cont = cont+1;
		}

		saida = Integer.parseInt(JOptionPane.showInputDialog(null, "Deseja sair?"+
																"\n Se sim, aperte 0."+
																"\n Se não, aperte 1."));
	}
	while (saida != 0);

	aux = reclama/cont;
    porcento = aux*100;

	if ((contInstIF < contInstSS) && (contInstIF < contInstME) && (contInstIF < contInst))
   	{	
   		JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram "+
   											"Bancos e Instituições Financeiras."+
   											"\n O total de entrevistados foi de: " +cont+
   											"\n O por cento de reclamações para quem "+ 
   								  			"não conseguiu cancelar serviços foi de: " +porcento);
   	}
    		
   	if ((contInstSS < contInstIF) && (contInstSS < contInstME) && (contInstSS < contInst))
   	{
   		JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+
    										"Empresas de Seguros/Planos de Saúde."+
   											"\n O total de entrevistados foi de: " +cont+
    										"\n O por cento de reclamações para quem "+ 
    							  			"não conseguiu cancelar serviços foi de: " +porcento);
    }
    	
    if ((contInstME < contInstSS) && (contInstME < contInstIF) && (contInstME < contInst))
    {
    	JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+
    										"Lojas de Móveis e Eletrodomésticos."+
    										"\n O total de entrevistados foi de: " +cont+
    										"\n O por cento de reclamações para quem "+ 
    							  			"não conseguiu cancelar serviços foi de: " +porcento);
    }
    	
    if ((contInst < contInstME) && (contInst < contInstSS) && (contInst < contInstIF))
    {
    	JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+
    										"Operadoras de Telefonia Celular."+
    										"\n O total de entrevistados foi de: " +cont+
    										"\n O por cento de reclamações para quem "+ 
    							  			"não conseguiu cancelar serviços foi de: " +porcento);
    }
} 

}

Tenta fechar a tag [code] para ver se fica melhor de entender isso.

[code]import javax.swing.JOptionPane;

public class Reclamacoes
{
public static void main (String args[])
{
int prob, contInst = 0, contInstIF = 0, contInstSS = 0, contInstME = 0, cont = 0, reclama = 0, saida, aux = 0;
String instituição;
double porcento;

//* contProb = Contagem dos problemas 
//* contInst = Contagem das instituições 
//* menorRec = Menor número de reclamações 

 do 
 { 
    instituição = JOptionPane.showInputDialog(null, "Escolha uma instituição: "+ 
                                                 "\n A Operadoras de Telefonia Celular."+ 
                                                 "\n B Lojas de Móveis e Eletrodomésticos."+ 
                                                 "\n C Empresas de Seguros/Planos de Saúde."+ 
                                                 "\n D Bancos e Instituições Financeiras.").toUpperCase(); 

     char cod = instituição.charAt(0); 

     switch(cod) 
    { 
          case 'A': 

               contInst = contInst + 1; 
               break; 

          case 'B': 

               contInstME = contInstME + 1; 
               break; 

          case 'C': 

                contInstSS = contInstSS + 1; 
                break; 

          case 'D': 

                contInstIF = contInstIF + 1; 
                break; 

            default: 
                     JOptionPane.showMessageDialog(null,"Essa opção para instituição é inexistente."); 

    } 

     prob = Integer.parseInt(JOptionPane.showInputDialog(null, "Escolha o tipo de reclamação: "+ 
                                                              "\n 1 Demora no atendimento."+ 
                                                              "\n 2 Não conseguiu efetuar cancelamento de serviço."+ 
                                                              "\n 3 Dificuldade em contatar um atendente."+ 
                                                              "\n 4 Opções de difícil entendimento."+ 
                                                              "\n 5 Não conseguiu realizar a operação desejada.")); 
      if (prob == 1) 
      { 
       cont = cont+1; 
       } 

      if (prob == 2) 
      { 
       cont = cont+1; 
       reclama = reclama+1; 
       } 

       if (prob == 3) 
      { 
        cont = cont+1; 
       } 

       if (prob == 4) 
      { 
        cont = cont+1; 
       } 

       if (prob == 5) 
      { 
        cont = cont+1; 
       } 

        saida = Integer.parseInt(JOptionPane.showInputDialog(null, "Deseja sair?"+ 
                                                                    "\n Se sim, aperte 0."+ 
                                                                     "\n Se não, aperte 1.")); 
} 
while (saida != 0); 

aux = reclama/cont; 
porcento = aux*100; 

if ((contInstIF < contInstSS) && (contInstIF < contInstME) && (contInstIF < contInst)) 
{	
    JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram "+ 
                             "Bancos e Instituições Financeiras."+ 
                            "\n O total de entrevistados foi de: " +cont+ 
                             "\n O por cento de reclamações para quem "+ 
                            "não conseguiu cancelar serviços foi de: " +porcento); 
 } 

 if ((contInstSS < contInstIF) && (contInstSS < contInstME) && (contInstSS < contInst)) 
 { 
     JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+ 
                                     "Empresas de Seguros/Planos de Saúde."+ 
                                      "\n O total de entrevistados foi de: " +cont+ 
                                      "\n O por cento de reclamações para quem "+ 
                                     "não conseguiu cancelar serviços foi de: " +porcento); 
  } 

  if ((contInstME < contInstSS) && (contInstME < contInstIF) && (contInstME < contInst)) 
  { 
      JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+ 
                               "Lojas de Móveis e Eletrodomésticos."+ 
                               "\n O total de entrevistados foi de: " +cont+ 
                               "\n O por cento de reclamações para quem "+ 
                               "não conseguiu cancelar serviços foi de: " +porcento); 
   } 

   if ((contInst < contInstME) && (contInst < contInstSS) && (contInst < contInstIF)) 
   { 
        JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as "+ 
                                  "Operadoras de Telefonia Celular."+ 
                                  "\n O total de entrevistados foi de: " +cont+ 
                                  "\n O por cento de reclamações para quem "+ 
                                  "não conseguiu cancelar serviços foi de: " +porcento); 
    } 
} 

}[/code]

facil resolver… sua logica de negocio ta errada =D

testei aqui e ta funcionando perfeitamente… se vc falar a regra de negocio que vc quer quem sabe eu ajude vc…

mas os ifs que vc montou tao funcionando perfeitamente…

Não existe um número exato de entrevistados.

1 - Precisa imprimir a instituição que recebeu o menor número de reclamações.

2 - O Número total de entrevistados.

3 - O por cento representativo do tipo de reclamação: (“Não conseguiu efetuar cancelamento de serviço”).

[quote=314ss]Não existe um número exato de entrevistados.

1 - Precisa imprimir a instituição que recebeu o menor número de reclamações.

2 - O Número total de entrevistados.

3 - O por cento representativo do tipo de reclamação: (“Não conseguiu efetuar cancelamento de serviço”).[/quote]

seu erro ta justamente nos iffs… se eu fizer uma pesquisa… de por exemplo 9 pessoas… e todas falaram que a telefonia é ruim… e ninguem falou das outras… logo… vc com esses if nao descobre isso…

a resposta das suas perguntas é simples… resolvi rapidamente…

a comparação vc faz < (menor) sendo que o correto é fazer com o (>)

troque isso nos iffs que isso funciona

O problema que ta ocorrendo é que o programa ta finalizando no while, ele não ta chegando nos ifs fora da repetição pra testar a condição dos if.

roda:

do
{
(instruções)
}
while (condição)

Exit program.

Mas ainda falta:

if
{
blabla… etc

[quote=314ss]O problema que ta ocorrendo é que o programa ta finalizando no while, ele não ta chegando nos ifs fora da repetição pra testar a condição dos if.

roda:

do
{
(instruções)
}
while (condição)

Exit program.

Mas ainda falta:

if
{
blabla… etc
[/quote]

cara… ta indo ate o final… o problema é o seus ifs vc ta falando assim … vamos supor que o contInst é 9… e o restante das variaveis é 0…
vai bater no ultimo if e vai falar contInst é menor que contInstME? a resposta é false… entao sai do laço do if… pois o &&(e) assim que ele bate no primeiro false ele assumi que nao corresponde a função e sai… se voce mudar a condição para contInst(9) é maior que contInstME(0)? sim vai pro proximo… constInst para contInst(9) é maior que contInstSS(0)?? sim… vai para o proximo parametro e pergunta contInst(9) é maior que contInstIF(0)? sim…

e entao entra no if… do contrario vai sair… vc precisa estudar mais logica de programação…

if ((contInst > contInstME) && (contInst > contInstSS) && (contInst > contInstIF)) { JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as " + "Operadoras de Telefonia Celular." + "\n O total de entrevistados foi de: " + cont + "\n O por cento de reclamações para quem " + "não conseguiu cancelar serviços foi de: " + porcento); }

[quote=darklordkamui][quote=314ss]O problema que ta ocorrendo é que o programa ta finalizando no while, ele não ta chegando nos ifs fora da repetição pra testar a condição dos if.

roda:

do
{
(instruções)
}
while (condição)

Exit program.

Mas ainda falta:

if
{
blabla… etc
[/quote]

cara… ta indo ate o final… o problema é o seus ifs vc ta falando assim … vamos supor que o contInst é 9… e o restante das variaveis é 0…
vai bater no ultimo if e vai falar contInst é menor que contInstME? a resposta é false… entao sai do laço do if… pois o &&(e) assim que ele bate no primeiro false ele assumi que nao corresponde a função e sai… se voce mudar a condição para contInst(9) é maior que contInstME(0)? sim vai pro proximo… constInst para contInst(9) é maior que contInstSS(0)?? sim… vai para o proximo parametro e pergunta contInst(9) é maior que contInstIF(0)? sim…

e entao entra no if… do contrario vai sair… vc precisa estudar mais logica de programação…

if ((contInst > contInstME) && (contInst > contInstSS) && (contInst > contInstIF)) { JOptionPane.showMessageDialog(null, "A instituição que recebeu menos reclamações foram as " + "Operadoras de Telefonia Celular." + "\n O total de entrevistados foi de: " + cont + "\n O por cento de reclamações para quem " + "não conseguiu cancelar serviços foi de: " + porcento); }[/quote]

fora que vc vai ter um problema com a porcentagem… sempre vai ser 0… pois o int nao arredonda perfeitamente… tera que colocar um double e no final multiplicar por 100… para dar porcentagem correta

Entendi o que você disse perfeitamente, não tinha enxergado o problema de serem todas inicializadas em 0 e tal, usando seu exemplo consegui enxergar mais claramente o problema.

Preciso imprimir a que MENOS teve reclamações.

vlw.