dúvida para contar uma string

Estou com uma dúvida nesse código.
Não consigo contar a profissão dentista.
Alguém pode me ajudar.[code]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);

}

}[/code]

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.

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

[code]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);  

}  

}[/code]

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:

[code]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);  

}  

}[/code]

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

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

[quote=napoli14]Estou com uma dúvida nesse código.
Não consigo contar a profissão dentista.
Alguém pode me ajudar.[code]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);

}

}[/code][/quote]

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.

Resolvido.Valeu…