Por que quando eu peço pra ele ler o nome,ele fecha o programa?

package com.exercicios;

import java.util.Scanner;

public class HomensMulheres {
  
  public static void main(String[] args) {
    int sexo = 0;
    Scanner leia = new Scanner(System.in);
    
    System.out.println("Escolha o sexo da pessoa:");
    System.out.println("1-homem");
    System.out.println("2-mulher");
    System.out.println("Escolha uma das opções acima:");
    
    sexo = leia.nextInt();
    
    if (sexo == 1) {
      System.out.println("sexo feminino!");
    } else if (sexo == 2) {
      System.out.println("sexo masculino");
    }
    
    System.out.println("Digite o nome do seu avatar:");
    String name = leia.nextLine();
    System.out.println("nome:" + name);
  }
}

Só um pequeno ajuste

public static void main(String[] args) {

    int sexo = 0;

    Scanner leia = new Scanner(System.in);

    System.out.println("Escolha o sexo da pessoa:");
    System.out.println("1-homem");
    System.out.println("2-mulher");
    System.out.println("Escolha uma das opções acima:");
    sexo = leia.nextInt();

    if (sexo == 1) {
        System.out.println("sexo feminino!");

    } else if (sexo == 2) {
        System.out.println("sexo masculino");
    }
    System.out.println("Digite o nome do seu avatar:");
    leia.nextLine();
    String name = leia.next();
    System.out.println("nome:" + name);

}

É normal. É o que acontece quando vc invoca next(), nextInt(), nextDouble() e companhia, e logo em seguida invoca o nextLine(), por causa da forma como eles funcionam.

Outra forma de resolver é trocar o trecho abaixo:

sexo = leia.nextInt();

Por este:

sexo = Integer.parseInt(leia.nextLine());
3 curtidas

Muito obg,achou bastante!!!