Galera o programa não esta passando pelo if e não porque motivo, por favor quem puder me ajudar eu agradeço.
packageQuestao19;importjava.util.*;publicclassresp{publicstaticvoidmain(String[]args){Scannerler=newScanner(System.in);Stringnome,sexo;Shorthomem=0,mulher=0;for(inti=0;i<=56;i++){System.out.println("Informe seu nome:");nome=ler.next();System.out.println("Informe seu sexo M/F");sexo=ler.next();System.out.println(sexo+"Antes");if(sexo=="M"||sexo=="m"){System.out.println("Seu nome é "+nome+" e você é homem");homem++;}elseif(sexo=="F"||sexo=="f"){System.out.println("Seu nome é"+nome+" e você é mulher");mulher++;}}System.out.println("Homens: "+homem);System.out.println("Mulheres: "+mulher);}}
Galera o programa não esta passando pelo if e não porque motivo, por favor quem puder me ajudar eu agradeço.
packageQuestao19;importjava.util.*;publicclassresp{publicstaticvoidmain(String[]args){Scannerler=newScanner(System.in);Stringnome,sexo;Shorthomem=0,mulher=0;for(inti=0;i<=56;i++){System.out.println("Informe seu nome:");nome=ler.next();System.out.println("Informe seu sexo M/F");sexo=ler.next();System.out.println(sexo+"Antes");if(sexo=="M"||sexo=="m"){System.out.println("Seu nome é "+nome+" e você é homem");homem++;}elseif(sexo=="F"||sexo=="f"){System.out.println("Seu nome é"+nome+" e você é mulher");mulher++;}}System.out.println("Homens: "+homem);System.out.println("Mulheres: "+mulher);}}
Me descupem se postei no local errado
Simples meu jovem, String é um objeto. Se você quer comparar um objeto, ao usar == você está comparando apenas a referencia na memória. Se você usar o metodo equals você estara comparando se os dois objetos são iguais. Ou seja, ao inves de usar
sexo == "F"
use
"F".equals(sexo)
Rodrigo_Sasaki
Não se compara strings com o operador ==
Aliás, não se compara nenhum objeto assim, pois você estará comparando endereços de memória.
use o método equals()
M
Miguelrsn
No caso if (sexo.equals("M")||sexo.equals("m"))
seria uma boa?
S
Sem_Nome
Miguelrsn:
No caso if (sexo.equals("M")||sexo.equals("m"))
seria uma boa?
O jeito que o drsmachado disse fica melhor.
if("M".equalsIgnoreCase(sexo)){
//codigo
}
M
Miguelrsn
Entendi, muito obrigado a todos que responderam. Pode fechar o tópico
drsmachado
Sem_Nome:
Miguelrsn:
No caso if (sexo.equals("M")||sexo.equals("m"))
seria uma boa?
O jeito que o drsmachado disse fica melhor.
if("M".equalsIgnoreCase(sexo)){
//codigo
}
Sempre que for comparar utilizando o equals ou equalsIgnoreCase, considere que o primeiro argumento deve ser o objeto que conhecemos.
Pois, considerando o caso, se sexo for, por alguma razão, nulo, a validação não lança uma NullPointerException
S
Sem_Nome
drsmachado:
Sem_Nome:
Miguelrsn:
No caso if (sexo.equals("M")||sexo.equals("m"))
seria uma boa?
O jeito que o drsmachado disse fica melhor.
if("M".equalsIgnoreCase(sexo)){
//codigo
}
Sempre que for comparar utilizando o equals ou equalsIgnoreCase, considere que o primeiro argumento deve ser o objeto que conhecemos.
Pois, considerando o caso, se sexo for, por alguma razão, nulo, a validação não lança uma NullPointerException
Sim, por experiencia propria SEMPRE deixe a variavel como argumento para o equals(). Vai te poupar muitas dores de cabeça.
M
Miguelrsn
Já estou aprendendo, rsrs. Muito obrigado galera. Uma pergunta off topic antes que fechem. O eclipse possui alguma ferramenta para preencher automático as variáveis. Tipo, aqui Short homem=0,mulher=0;
for (int i =0; i<=56; i++){ , digitar isso tudo ou mais para testar o código é meio trabalhoso…
S
Sem_Nome
Miguelrsn:
Já estou aprendendo, rsrs. Muito obrigado galera. Uma pergunta off topic antes que fechem. O eclipse possui alguma ferramenta para preencher automático as variáveis. Tipo, aqui Short homem=0,mulher=0;
for (int i =0; i<=56; i++){ , digitar isso tudo ou mais para testar o código é meio trabalhoso…
Já estou aprendendo, rsrs. Muito obrigado galera. Uma pergunta off topic antes que fechem. O eclipse possui alguma ferramenta para preencher automático as variáveis. Tipo, aqui Short homem=0,mulher=0;
for (int i =0; i<=56; i++){ , digitar isso tudo ou mais para testar o código é meio trabalhoso…
Se for isso segura ctrl e aperta espaço. Isso funciona para metodos também.
Se for algo como atribuir 0 para elas eu creio que nao.
Não bem isso mano digo que com esse laço eu vou ter que digitar o nome e o sexo 56 vezes para testar o código. Queria saber se o eclipse tem alguma ferramenta para preencher as variáveis
Stringnome,sexo;
Automático
E
entanglement
Ah, entendi, você queria um robozinho que testasse seu programa para você, não?
Eu costumo criar a entrada com um arquivo-texto , e redirecionar a entrada para não ter de digitar tudo isso.
(Não sei se dá para redirecionar a entrada dentro do próprio Eclipse. É que meus programas são meio complicados de usar e costumo acabar testando certas coisas fora do Eclipse. )
M
Miguelrsn
A entendi, já desconfiava que não tinha. É que antes de passar para o eclipse eu eu aprendi algoritmo no Visualg e la tinha. Obrigado