Retornar String Boolean (Masculino ou Feminino)

Olá, só muito iniciante em java.
Estou começando a aprender agora e as duvidas começam a aparecer em grande número. :lol:

Preciso criar um método pra validar o valor que será atribuido ao sexo (M ou F) e não pode ser vazio. O método deve retornar um valor boolean.

Ja fiz os construtores, e os métodos Getter e Setter.

Obrigado.

veja se é issu:

public class sexo {

	private boolean txtsexo;
	private String sexo;
	
	public void setSexo(String sexo){
		
		this.sexo = sexo;
	}
	
	public boolean getSexo(){			
	    if(sexo == null || sexo.equals("")){
	    	txtsexo = false;
	    }else{	    	
	    	txtsexo = true;
	    }

	    return txtsexo;
	}
	
}

bem lembrado ao invez de por 1 metodo get e um set larguei 2 gets

Boa noite galera !

Não sei se entendi direito a dúvida…

Mas, de qualquer forma, na solução proposta pelo roberto, me parece estranho ter um método getSexo(String sexo), que na verdade faz o papel de um setSexo.
Outra coisa que me parece estranha é que o outro método getSexo() retorna boolean, se ele é um método de validação, eu acho que deveria chamar validaSexo.

Também faltou validar se o valor passado é M ou F, ou um outro valor errado…

Por alto, eu acho que você deveria ter um método validaSexo que poderia por exemplo lancar uma “SexoException” caso o valor atribuido fosse em branco ou diferente de M e F.
Este método seria utilizado pelo seu setSexo para validar o valor recebido.

Se puder explicar melhor qual a sua duvida…

Obrigado.

[]s

public class Sexo {
private char sexo;

Sexo(char umSexo){
	this.sexo=umSexo;
}

boolean testeSexo(){
	if(sexo=='M'|| sexo=='F')
		return true;
	else 
		return false;
}

public char getSexo() {
	return sexo;
}

public void setSexo(char sexo) {
	this.sexo = sexo;
}

public void imprimir(){
	System.out.println("Sexo:"+getSexo());
	System.out.println(testeSexo());
}

}
Ve se é isso que vc quer???

Garabir, não entendi mto bem o que você quer fazer, mas é isso?!?!?!

	public boolean setSexo(char sexo) {
		if (sexo == 'F' || sexo == 'M') {
			this.sexo = sexo;
			return true;
		} else {
			return false;
		}

sei lá, normalmente setters são void!!! oO
(já vi setters com retorno boolean em dotNet (ok, eu sei, bizarro)

Uma outra forma de fazer isso, bem interessante, que pode ser aplicada em qualquer caso onde os valores são predefinidos. Não é exatamente o que você quer, mas pode te servir no futuro:

enum Sexo {
   INVALIDO("", "Inválido"),
   MASCULINO("M", "Masculino"),
   FEMININO("F", "Feminino");

   Sexo(String tag, String descricao) {
      this.tag = tag;
      this.descricao = descricao;
   }

   public String getTag() {
      return tag;
   }

   public getDescricao() {
      return descricao;
   }

   public static Sexo fromTag(String tag) {
      for (Sexo sexo : Sexo.values()) 
         if (sexo.getTag().equals(tag))
            return sexo;

      return INVALIDO;
   }

   public boolean valido() {
      return this != INVALIDO;
   }

   public String toString() {
      return getDescricao();
   }
}

Não é o caso aqui (bom, depente, hehe), mas dessa forma sua lista de valores pode aumentar ou diminuir, sem que seja necessária qualquer alteração na classe, além, claro, das contantes do enum.

Usa-se assim:

   (...)

   Sexo sexo = Sexo.fromTag("F");
   System.out.println(sexo); //saída: "Feminino"
   (...)
   Sexo sexo = Sexo.fromTag("G");

   if (!sexo.valido())
      System.out.println("Olá, bom dia! Eu admiro sua coragem, mas precisamos de M ou F."); //evita processo por discriminação;
   else
      System.out.println(String.format("Valor OK: %s", sexo.getDescricao()));

   (...)

get vai retornar o valor do atributo sexo
o set n retorna nada

pra isso usa-se o “is”

public boolean isSexoValido(){ if(sexo == 'M' || sexo == 'F'){ return true; } return false; }

faça + rapido deixe seu codigo limpo

seucodigo.setSelectedIndex("masculino".equals(d.seucodigo().toLowerCase()) ? 1 : 2);

Acho melhor inverter a lógica. Armazene o sexo como boolean, e evite coisas como validaSexo:

[code]public class Sexo
{
public boolean masculino;

public Sexo(boolean masculino) {
   this.masculino = masculino;
}

public Sexo(char letra) {
setSexo(letra);
}

public final setMasculino(boolean masculino) {
this.masculino = masculino;
}

public final setFeminino(boolean feminino) {
setMasculino(!feminino);
}

//Método de conveniência.
//Eu sinceramente não colocaria esse método na classe.
public final setSexo(char letra) {
if (letra == ‘M’ || letra == ‘m’)
masculino = true;
else if (letra == ‘F’ || letra == ‘f’)
masculino = false;
//Ou criar uma SexoException, filha dessa, como falou o colega
throw new IllegalArgumentException(“Sexo inválido!”);
}

public boolean isMasculino() { return masculino; }
public boolean isFeminino() { return feminino; }

public String getSigla() { return masculino ? “M” : “F”; }
public String getDescricao() { return masculino ? “Masculino” : “Feminino”; }
public String toString() { return getDescricao(); }

@Override
public boolean equals(Object outro) {
if (outro.getClass() != Sexo.class) return false;
return ((Sexo)outro).masculino == masculino;
}

@Override
public int hashCode() { return masculino ? 0 : 1; }
}[/code]