String em IF

boa noite pessoal, sou novato e tenho uma duvida a respeito de usar o “IF”.
não sei o que errei no código para não conseguir alternar entre a resposta do sexo feminino ou masculino dependendo da resposta do usuário.

package javaapplication1;

import java.util.Scanner;

public class JavaApplication1 {

public static void main(String[] args) {
    
    Scanner input = new Scanner (System.in);
    Scanner sc = new Scanner(System.in);

    int qtdeHomem = 1;
    
          
    System.out.println("Qual o seu sexo?");
    String sexo = sc.next();
    String male = null;
    String female = null;
        
    
        if(sexo==male) {        
            qtdeHomem++;
        }else if(sexo==female) {
            qtdeHomem--;            
        }
    
    System.out.println("Qual o seu primeiro nome?");
    String primeiroNome = input.next();
    
    System.out.println("Qual o seu segundo nome?");
    String segundoNome = input.next();

    System.out.println("Qual a sua idade?");
    int idade = input.nextInt();

    System.out.println("Qual o seu peso?");
    double peso = input.nextDouble();

    System.out.println("Qual a sua altura?");
    int altura = input.nextInt();
    
    if(qtdeHomem > 1)
        System.out.println("Olá senhor " + primeiroNome+ " " + segundoNome+ " de " +idade+ " anos, você tem " +peso+ " quilos e " +altura+ " m de altura");
    else
        System.out.println("Olá senhora " + primeiroNome+ " " + segundoNome+ " de " +idade+ " anos, você tem " +peso+ " quilos e " +altura+ " m de altura");        
}

}

Boas, para avaliar uma String, uma vez que não é uma variavel primitiva, é uma classe e tem os seus métodos, pode avaliar atraves de .equals(), exp:

if (sexo.equals(male)) {
            qtdeHomem++;
        } else if (sexo == female) {
            qtdeHomem--;
        }

No entanto repare que cada vez que solicita o sexo ao utilizador, a variavel sexo fica com esse valor que foi digitado, exp: “m”, no entanto no if está a avaliar variaveis que estão nulas, pode efetuar desta forma.

System.out.println("Qual o seu sexo? introduza (m) para masculino ou (f) femenino ?");
String sexo = sc.next();
String male = "m";
String female = "f";
//avalia se a variavel sexo é igual a "m"//
if (sexo.equals(male)) {
    qtdeHomem++;
} else if (sexo == female) {
    qtdeHomem--;
}

Bom estudo :slight_smile:

muito obrigado cara, me ajudou muito, mas se em um futuro próximo eu queria ao invés de fazer com o sexo do usuário eu faça com outra coisa? como por exemplo se ele escrever a palavra “bala” em uma resposta eu mudo o rumo do código, tem como?

1 curtida

Nesta situação até podia utilziar char em vez de String, se só utilizar um caracter, no entanto se for “bala” o codigo fica igual, é só alterar a variavel que está inicializada com

String male = “m”;
passa a ser
String male = “bala”;

exprimente que vai resultar, digite bala em vez de m.

System.out.println("Qual o seu sexo? introduza (bala) para masculino ou (f) femenino ?");
String sexo = sc.next();
String male = "bala";
String female = "f";

if (sexo.equals(male)) {
    qtdeHomem++;
} else if (sexo == female) {
    qtdeHomem--;
}

Bom estudo