Duvidas com char, em if e while

4 respostas
E

Pessoal eh o seguinte.....to fazendo um trabalho da facul.....e preciso de ajuda...... olhem esse código e ve se alguem pode me ajudar:

import javax.swing.*;
public class PesquisaDAO{

	
		public void Inserir(PesquisaDTO pesquisaDTO){
			pesquisaDTO.setSal(Double.parseDouble(JOptionPane.showInputDialog("Digite o sálario da pessoa :")));
			pesquisaDTO.setTotalsal(pesquisaDTO.getTotalsal()+pesquisaDTO.getSal());
			pesquisaDTO.setSexo(Char.parseChar(JOptionPane.showInputDialog("Digite o sexo da pessoa :")));  //Aqui eu preciso trabalhar com char e nao com string
			if(pesquisaDTO.getSexo()!='m' || pesquisaDTO.getSexo()!='M' || pesquisaDTO.getSexo()!='f' || pesquisaDTO.getSexo()!='F'){ // aki eu preciso comparar se sexo eh diferente de 'm' 'M' 'f' ou 'F'
				while(pesquisaDTO.getSexo()!='m' || pesquisaDTO.getSexo()!='M' || pesquisaDTO.getSexo()!='f' || pesquisaDTO.getSexo()!='F'){ //e aki preciso que enquando o sexo for diferente de 'f' 'F' 'm' e 'M' continue executando.
					pesquisaDTO.setSexo(Char.parseChar(JOptionPane.showInputDialog("Sexo invalido. "
									    +"\nInforme novamente o sexo do pesquisado: ")));
				}
			}
			Versexo(pesquisaDTO);
			pesquisaDTO.setCont(pesquisaDTO.getCont()+1);
			
		}

		public void Versexo(PesquisaDTO pesquisaDTO){
			if((pesquisaDTO.getSexo()=='m') || (pesquisaDTO.getSexo()=='M')){
				pesquisaDTO.setConth(pesquisaDTO.getConth()+1);
			}
			if((pesquisaDTO.getSexo()=='f') || (pesquisaDTO.getSexo()=='M')){
				pesquisaDTO.setContm(pesquisaDTO.getContm()+1);
				if(pesquisaDTO.getSal()<=300){
					pesquisaDTO.setContmn(pesquisaDTO.getContmn()+1);
				}
			}
		}
		
		public void Calcular(PesquisaDTO pesquisaDTO){
			pesquisaDTO.setMediasal(pesquisaDTO.getTotalsal()/pesquisaDTO.getCont());
			pesquisaDTO.setPorch((pesquisaDTO.getConth()*100)/pesquisaDTO.getCont());
			pesquisaDTO.setPorcm((pesquisaDTO.getContm()*100)/pesquisaDTO.getCont());
			pesquisaDTO.setPorcmn((pesquisaDTO.getContmn()*100)/pesquisaDTO.getContm());
		}
		
		public void Mostraresultado(PesquisaDTO pesquisaDTO){
			JOptionPane.showMessageDialog(null,"Numero de pessoas entrevistadas: " + pesquisaDTO.getCont()
								+"\nA média salarial de todas as pessoas entrevistadas foi R$" + pesquisaDTO.getMediasal() 
								+"\nA porcentagem de homens entrevistados foi: " +pesquisaDTO.getPorch()+"%" 
								+"\nA porcentagem de mulheres entrevistadas foi: " +pesquisaDTO.getPorcm()+"%" 
								+"\nA porcentagem de mulheres com salario < ou = R$300,00 entrevistadas foi: " +pesquisaDTO.getPorcmn()+"%" );
		}
		
		
}

Bem eu descrivi no codigo o que eu preciso.....alguma alma bondosa pode me ajudar???

4 Respostas

Naruffy

em vez de udar o operador != use

pesquisaDTO.getSexo().equalsIgnoreCase("f")

esse método da classe String retorna um boolean se as Strings forem igual, e false se não forem :wink:

E

Naruffy:
em vez de udar o operador != use

pesquisaDTO.getSexo().equalsIgnoreCase("f")

esse método da classe String retorna um boolean se as Strings forem igual, e false se não forem :wink:

vc pode simplificar pra mim, como eu faria essa verificação, o sexo nao pode ser diferente de Masculino ou Feminino, que no casso eh ‘m’ ‘M’ ‘f’ ou ‘F’, eu continuaria fazendo o if e o while, ow eu ira mudar? e como eu faço pra fazer a leitura de um caracter.

eu tentei igual eu faço para String, mas da erro ao compilar, pois na classe que eu coloquei as variaveis e os metodos getters e setters eu pois como char, e o professor disse que quer como char nao como string.
eu tentei assim: pesquisaDTO.setSexo(JOptionPane.showInputDialog(“Digite o sexo da pessoa :”)); é assim que eu faço para string mas naum deu certo, agora para caracter naum sei como fazer.

B

Talvez um getSexo().matches("^(m|M|f|F)$") ou “^[mMfF]$” ?

Uma pergunta impertinente: Se não é Masculino nem Feminino, é o que? :twisted:

fantomas

Oi edileyoliveira,

 o código que você postou, e achei que tem vários problemas.
O seu professor por um acaso deu uma olhada neste código?  :shock: 

Mas é o seguinte; segue abaixo alguns pontos que observei:

1) Até onde eu sei o JOptionPane não retorna dados do tipo char. Sendo assim, vc teria que resolver isso de outra maneira.
2) Acho que você misturou vários conceitos. Ex: DTO, DAO, camadas etc...

Coloquei abaixo alguma coisa em java para mostrar [b]MAIS OU MENOS[/b]  o que entendi que você está tentando fazer.

Primeiro fiz uma classe chamada VIEW.
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class View extends JFrame {
	
	public View() {
		super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		super.setSize(100, 100);
		super.setLocation(500,300);
		super.setVisible(true);
	}
	
	public String obterSalario() {
		return JOptionPane.showInputDialog(this,"Digite o sálario da pessoa :");
	}
	
	public char obterSexo() {
		boolean valida = false;
		String resposta = null;
		
		while( !valida ) {
		    resposta = JOptionPane.showInputDialog(this,"Digite o sexo da pessoa :");
		    
		    valida = verificarSexo(resposta);
		}
		
		return resposta.toUpperCase().charAt(0);
	}
	
	private boolean verificarSexo(String sexo) {
		boolean valida = false;
		
		if( sexo != null && sexo.length() == 1) {
			char s = sexo.toUpperCase().charAt(0);
			valida = (s == 'F' || s == 'M');
		}
		
		if( !valida ) {
			JOptionPane.showMessageDialog(this,"Resposta invalida, informe novamente o sexo do pesquisado: ", "", JOptionPane.OK_CANCEL_OPTION);
		}
		
		return valida; 
	}
	
	public void mostraResultado(PesquisaDTO pesquisaDTO){
		JOptionPane.showMessageDialog(null,"Numero de pessoas entrevistadas: " + pesquisaDTO.getCont()
							+"\nA média salarial de todas as pessoas entrevistadas foi R$" + pesquisaDTO.getMediasal() 
							+"\nA porcentagem de homens entrevistados foi: " +pesquisaDTO.getPorch()+"%" 
							+"\nA porcentagem de mulheres entrevistadas foi: " +pesquisaDTO.getPorcm()+"%" 
							+"\nA porcentagem de mulheres com salario < ou = R$300,00 entrevistadas foi: " +pesquisaDTO.getPorcmn()+"%" );
	}
	
	public static void encerrarExecucao() {
		System.exit(0);
	}
	
	public static void main(String[] args) {
		
		// Construir o visual
		View view = new View();
		
		PesquisaDTO pesquisaDTO = new PesquisaDTO();
		
		// Obter e abribuir os dados
		pesquisaDTO.setSexo(view.obterSexo());
		pesquisaDTO.setSal(Double.parseDouble(view.obterSalario()));
		
		// Executar os calculos
		pesquisaDTO.calcular();
		
		// Apresentar os resultados
		view.mostraResultado(pesquisaDTO);
		
		// Inserir os dados na base ????????????????
		PesquisaDAO pesquisaDAO = new PesquisaDAO();
		
		pesquisaDAO.Inserir(pesquisaDTO);
		
		view.encerrarExecucao();
	}
}

Agora a classe PesquisaDTO

public class PesquisaDTO {
	private double sal = 0;
	private double totalSal = 0;
	private char sexo = 'F';
	private int cont;
	private double conth = 0;
	private int contm = 0;
	private int contmn = 0;
	private double mediaSal = 0;
	private double porcm = 0;
	private double porcmn = 0;
	private double porch = 0;

	public void setSal(Double s) {
		this.sal = sal;
	}

	public Double getSal() {
		return this.sal;
	}

	public void setTotalsal(Double total) {
		this.totalSal = total;
	}

	public Double getTotalsal() {
		return this.totalSal;
	}

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

	public char getSexo() {
		return this.sexo;
	}

	public int getCont() {
		return this.cont;
	}

	public void setCont(int cont) {
		this.cont = cont;
	}

	public double getConth() {
		return this.conth;
	}

	public void setConth(double conth) {
		this.conth = conth;
	}

	public void setMediasal(double mediaSal) {
		this.mediaSal = mediaSal;
	}

	public double getMediasal() {
		return this.mediaSal;
	}

	public int getContm() {
		return this.contm;
	}

	public void setContm(int contm) {
		this.contm = contm;
	}

	public int getContmn() {
		return this.contmn;
	}

	public void setContmn(int contmn) {
		this.contmn = contmn;
	}

	public void setPorcm(double porCM) {
		this.porcm = porcm;
	}

	public double getPorcm() {
		return this.porcm;
	}

	public void setPorcmn(double porcmn) {
		this.porcmn = porcmn;
	}

	public double getPorcmn() {
		return this.porcmn;
	}

	public void setPorch(double porch) {
		this.porch = porch;
	}

	public double getPorch() {
		return this.porch;
	}
	
	public void calcular(){
		this.cont++;
		this.mediaSal = this.totalSal/this.cont;
		this.porch = this.conth*100/this.cont;
		this.porcm = this.contm*100/this.cont;
		this.porcmn = this.contmn*100/this.contm;
	}

	private void verSexo() {
		if ((this.sexo == 'm') || (this.sexo == 'M')) {
			this.conth++;
		}

		if ((this.sexo == 'f') || (this.sexo == 'M')) {

			this.contm++;

			if (this.sal <= 300) {
				this.contmn++;
			}
		}
	}
}

Aqui vai a última PesquisaDAO

public class PesquisaDAO{
	public void Inserir(PesquisaDTO pesquisaDTO){
		// Inserir os dados no banco de dados
	}
}
Note que alterei bastante a classe PesquisaDTO, vale uma verificação para ver se está tudo OK.

Então carinha é isso ai....na minha opinião se você seguir essa linha de pensamento que lhe apresentei acima acho que irá ficar mais fácil de você resolver essa tua questão.

P.S. Na classe View no método main é onde ocorre as chamadas interessantes talvez fosse melhor colocar em outro lugar.

Lembrando....o código apresentado é apenas um EXEMPLO, sendo necessário uma pesquisa profunda sobre os tópicos abordados para maiores esclarecimentos sobre como utilizar corretamente tais formas de solução.

System.out.println(“Abraços”);

Criado 5 de junho de 2008
Ultima resposta 5 de jun. de 2008
Respostas 4
Participantes 4