IF não funciona depois do while

9 respostas
M

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);
}
}
}

9 Respostas

drsmachado

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

3
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); 
        } 
    } 
}
darklordkamui

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…

3

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”).

darklordkamui

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”).

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

3

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

darklordkamui

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

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); }

darklordkamui

darklordkamui:
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

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); }

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

3

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.

Criado 31 de outubro de 2012
Ultima resposta 31 de out. de 2012
Respostas 9
Participantes 4