Java Iniciante

3 respostas
leodi

E ai galera do GUJ eu to fazendo facu de sistemas e começei a ver o linguagem java e gostaria q me descem uma luz quanto a esse exercicio .
Olha o codigo ai.

Entrar com nome, sexo e a idade de uma pessoa. Se a pessoa for do sexo feminino e tiver menos que 25 anos, imprimir nome e a mensagem: ACEITA. Caso contrario, imprimir nome e a mensagem: NÃO ACEITA.

public static void main(String[]args){

int idade;

String nome=new String(Masculino);

String sexo=new String(Feminino);

System.out.println(1.Digite o nome desejado);

nome=Entrada.getString();

System.out.println(2.Digite o sexo);

sexo=Entrada.getString();

System.out.println(3.Digite a idade);

idade=Entrada.getInt();

sexo=Entrada.getString();

if(sexo==F && idade<25)

System.out.println(Aceita+nome.equals(sexo));

else

System.out.println(Nao Aceita+nome.equals(sexo));

}

:? desde ja agredeço.

3 Respostas

Felagund

Nessa linha aqui

if(sexo=="F" && idade<25)

troque por

if(sexo.equals("F") && idade<25)

utilize a tag code para melhorar seu codigo.

PS: Depois da linha idade=Entrada.getInt(); tem uma nova leitura do sexo, acredito que isso seja desnecessário.

[]'s

D

Hail
Arrumei teu código cara, você tava fazendo umas coisas bem estranhas xD
Vê ae e dá uma estudada.

public static void main(String[]args){ int idade; //Não entendi o porque você inicializou o nome com "Masculino" o.O String nome=new String("Masculino"); String sexo=new String("Feminino"); System.out.println("1.Digite o nome desejado"); nome=Entrada.getString(); do{ System.out.println("2.Digite o sexo (F - feminino, M - masculino)"); sexo=Entrada.getString(); //Você tem que validar a string informada, senão se o usúario informar "feminino" //já não passa pelo seu if, que compara com "F" }while(!sexo.equalsIgnoreCase("f") && !sexo.equalsIgnoreCase("m")); do{ System.out.println("3.Digite a idade"); idade=Entrada.getInt(); //Valide a idade tambem para evitar aceitar números negativos ou muito grandes }while(idade <= 0 ||idade > 120); if(sexo.equalsIgnoreCase("F") && idade<25) //System.out.println("Aceita"+nome.equals(sexo)); //Não tem motivo para você imprimir essa comparação entre o nome e o sexo //(Bem estranha por sinal o.O) System.out.println("Aceita!"); else //System.out.println("Nao Aceita"+nome.equals(sexo)); System.out.println("Não Aceita!"); }

PS: Bem-vindo ao GUJ :smiley:

TiD

Só explicando o porquê de não se utilizar sexo == “F”,

sexo é uma variavel que voce definiu do tipo String, logo é uma REFERENCIA para o tipo String. Em Java, o operador == não compara o conteudo e sim se as duas pontas são de fato a mesma coisa (Exceto tipos primitivos, para comparar tipos primitivos (int, char, double etc) pode-se usar o ==). Portanto, voce esta com esse IF comparando se sua referencia (sexo) é igual a “F”, o que nunca vai ser verdade.

Para comparar o CONTEUDO de objetos, utilize o metodo equals, herdado da classe Object. Por isso trocaram para sexo.equals(“F”), ou seja, voce esta perguntando se o conteudo do objeto referenciado por sexo é igual a “F”.

Uma boa pratica: ao inves de sexo.equals(“F”), utilize “F”.equals(sexo) , pois se sexo for NULL não será lançado um NullPointerException. Fazendo sexo.equals voce esta chamando diretamente o metodo equals de uma referencia que pdoe ser nula. Ao chamar em “F”, voce tem certeza que isso não é nulo, portanto essa exceção não ocorrerá.

Criado 22 de julho de 2009
Ultima resposta 23 de jul. de 2009
Respostas 3
Participantes 4