dúvida para contar uma string

4 respostas
N
Estou com uma dúvida nesse código. Não consigo contar a profissão dentista. Alguém pode me ajudar.
import javax.swing.JOptionPane;


public class profissao {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int cont=0;
		
		
		for(int i=1;i<=3;i++){
			String prof=JOptionPane.showInputDialog("Digite a profissão");
			if(prof.equals("DENTISTA") && prof.equals("dentista") && prof.equals("Dentista")){
				 cont++;
			}
			
			
		}
		JOptionPane.showMessageDialog(null, "A qtde de dentistas é "+cont);

	}

}

4 Respostas

G

Bom pra começar vc tem que usar OU no lugar de E no IF. Porque se apenas 1 das validações foram corretas, o cont deve ser incrementado.

War_Paz

O operador "&&" significa "e". O que você está fazendo é que, na condição que a string seja igual a "DENTISTA", "Dentista" e "dentista", cont receba +1. O fato é: a string só vai vir com um valor. Ela não pode ser os três valores que você tá comparando ao mesmo tempo.

Para compará-la a estes três valores, use o operador "||", que significa "ou".

import javax.swing.JOptionPane;  
  
  
public class profissao {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        int cont=0;  
          
          
        for(int i=1;i<=3;i++){  
            String prof=JOptionPane.showInputDialog("Digite a profissão");  
            if(prof.equals("DENTISTA") || prof.equals("dentista") || prof.equals("Dentista")){  
                 cont++;  
            }  
              
              
        }  
        JOptionPane.showMessageDialog(null, "A qtde de dentistas é "+cont);  
  
    }  
  
}

No código acima, iria comparar-se a string com "DENTISTA", "dentista" e "Dentista", e se fosse igual a qualquer um desses valores, iria adicionar 1 a mais a "cont".

PORÉM, pra facilitar as nossas vidas, o Java tem o método equalsIgnoreCase. Basicamente, não vai importar se o usuário vai colocar "Dentista", "DENTISTA", "DeNTiStA" ou qualquer coisa que você vá imagina: Ele vai ignorar se está em maiúsculo ou minúsculo. Logo, o seu código ficaria assim:

import javax.swing.JOptionPane;  
  
  
public class profissao {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        int cont=0;  
          
          
        for(int i=1;i<=3;i++){  
            String prof=JOptionPane.showInputDialog("Digite a profissão");  
            if(prof.equalsIgnoreCase("Dentista")){  
                 cont++;  
            }  
              
              
        }  
        JOptionPane.showMessageDialog(null, "A qtde de dentistas é "+cont);  
  
    }  
  
}

O código acima vai comparar a string dada com "Dentista", mas não vai se preocupar com letras em maiúsculo ou minúsculo, então se a profissão dada pelo usuário for Dentista, ele vai adicionar +1 a cont :)

Qualquer dúvida, pode perguntas. Se a dúvida for respondida, edita o título do tópico para "[RESOLVIDO]" :)

lalau
napoli14:
Estou com uma dúvida nesse código. Não consigo contar a profissão dentista. Alguém pode me ajudar.
import javax.swing.JOptionPane;


public class profissao {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int cont=0;
		
		
		for(int i=1;i<=3;i++){
			String prof=JOptionPane.showInputDialog("Digite a profissão");
			if(prof.equals("DENTISTA") && prof.equals("dentista") && prof.equals("Dentista")){
				 cont++;
			}
			
			
		}
		JOptionPane.showMessageDialog(null, "A qtde de dentistas é "+cont);

	}

}
ola! repare que no seu código você fez assim:
if(prof.equals("DENTISTA") && prof.equals("dentista") && prof.equals("Dentista"))
esta condição só funcionara se "prof" for DENTISTA e ao mesmo tempo dentista e Dentista ai voce esta cometendo o erro de logica mesmo por isso o codigo não faz o que você esta esperando que ele faça veja a minha solução não é a unica existem melhores.
if(prof.equalsIgnoreCase("dentista")) // usei o método equalsIgnoreCase()
	// esse método não faz a distinção entre Maiusculas(UpperCase)
	// e minusculas(lowerCase)	tanto "DENTISTA" ou "dentista" serão aceites

ao usar uma classe recomendo que fique sempre com a documentação(API) aberta, pois oferece informações adicionais úteis.

N

Resolvido.Valeu…

Criado 12 de outubro de 2012
Ultima resposta 12 de out. de 2012
Respostas 4
Participantes 4