Ir ao conteúdo

Java Escolher sexo (F/M) em java com Switch


Ir à solução Resolvido por Mxty,

Posts recomendados

Postado

Eu tenho que fazer um programa que o user tem que digitar entre F(Feminino) e M(Masculino). Acho que o problema está no [g1] mas eu coloco o [g] é da erro, eu tentei em um fórum específico de Java e fecharam na hora, e já faz 5 horas que estou nessa parte aqui, desde já eu agradeço.

 

Código:

package curso;

import java.util.Scanner;
public class Curso {
    public static void main(String[] args){
        Scanner genero= new Scanner(System.in);
       String sexo;
        char g;
          char g1 = 'M';
         char g2 = 'F';
       
        
    System.out.println("Digite seu sexo: ");
         sexo = genero.next(); 

        switch(g1){
            case 'M':
                System.out.println("Maculino");
               
                break;
            case 'F':
                System.out.println("Femenino");
                break;
            
                default:
                System.out.println("Invalido");
                break;
                  
        }
    }
}

 

 

Postado

Se o usuário digitou o sexo pra ser guardado na variável "sexo", por quê você está verificando a variável g1? E por que existe esse "g" que nem vai ser usado? 

Postado

O erro é porque sexo é do tipo String, e você provavelmente estava comparando com char.

 

Sinceramente, já começou errado lendo uma String para trabalhar com char, se queria um char, deveria ter lido um char.

 

Tome isso como base e adapte no seu código:

char sexo = scanner.next().toUpperCase().charAt(0);

switch(sexo){
    case 'F':
        System.out.println("Feminino");
        break;
    case 'M':
        System.out.println("Masculino");
        break;
    default:
        System.out.println("Indefinido");
        break;
}

 

Postado

@AdrianoSiqueira

 

package curso;

import java.util.Scanner;
public class Curso {
    public static void main(String[] args){
        Scanner genero= new Scanner(System.in);
      
        char g1 = 'M';
         char g2 = 'F';
       
        
    System.out.println("Digite seu sexo: ");
  char sexo = scanner.next().toUpperCase().charAt(0);

switch(sexo){
    case 'F':
        System.out.println("Feminino");
        break;
    case 'M':
        System.out.println("Masculino");
        break;
    default:
        System.out.println("Indefinido");
        break;
}
    }
}

 

( Erro aparece em: toUpperCase().charAt(0); // eu pesquisei sobre isso e não entendi pata que serve)

Postado

@Berus-kun Coloca tudo desse jeito:

import java.util.Scanner;
public class Main
{
	public static void main(String[] args) {
		Scanner genero = new Scanner(System.in);
      
        char sexo;
         
        System.out.println("Digite seu sexo: ");
        sexo = genero.next().charAt(0);
        sexo = Character.toUpperCase(sexo);

        switch(sexo){
          case 'F':
           System.out.println("Feminino");
           break;
          case 'M':
           System.out.println("Masculino");
           break;
          default:
           System.out.println("Indefinido");
           break;
	     }
     }	
}

 

Postado
11 minutos atrás, Shinigami Ryuuk disse:

@Berus-kun Coloca tudo desse jeito:


import java.util.Scanner;
public class Main
{
	public static void main(String[] args) {
		Scanner genero = new Scanner(System.in);
      
        char sexo;
         
        System.out.println("Digite seu sexo: ");
        sexo = genero.next().charAt(0);
        sexo = Character.toUpperCase(sexo);

        switch(sexo){
          case 'F':
           System.out.println("Feminino");
           break;
          case 'M':
           System.out.println("Masculino");
           break;
          default:
           System.out.println("Indefinido");
           break;
	     }
     }	
}

 

Então era para tirar o char g1 e g2?  deixa ver se eu entendi, essa seguida linha:

 

 sexo = genero.next().charAt(0);
        sexo = Character.toUpperCase(sexo);

 

vira o 'F' e o ''M'?

 

e qual a funcionalidade dessa variavel?(Se isso é uma variavel):

 

 genero.next().charAt(0);
Character.toUpperCase(sexo);

  • Solução
Postado

@Berus-kun As variáveis char g1 e char g2 não eram necessárias.

 

A variável "sexo" que é do tipo char vai ter como valor atribuído a tecla digitada pelo usuário (que vem da classe Scanner). E ao mesmo tempo ela vai pegar a primeira posição, no caso "charAt(0)".

Agora a próxima linha ainda dentro da variável sexo, foi atribuído à ela mesma o valor dela convertido para letra maiúscula com a utilização da classe Character e método toUpperCase() passando a própria variável como parâmetro.

 

E então segue o fluxo normalmente com o Switch verificando o valor e executando as instruções de acordo com o valor.

 

Deixei de um jeito amigável, veja se entendeu!

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...