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 
Qualquer dúvida, pode perguntas. Se a dúvida for respondida, edita o título do tópico para “[RESOLVIDO]” 