Do...while [Resolvido]

Nas instruções abaixo (que fazem parte de um metodo que cadastra dados de um cliente em um array ) eu peço para o cliente escolher qual seu sexo.
Eu estou usando um do…while com if…else dentro.
No entando esta dando erro na linha 19.

Sendo assim nem pude testar a logica ainda para ver se vai dar certo.

[code]do
{
System.out.print("Selecione qual o sexo do cliente: \n(1)-Masculino. \n(2)Feminino. ");
theCliente[x] = input.nextLine();
setCliente( theCliente );

		if ( getcliente()[x].equals("1") )
		
			setCliente(theCliente);
	
		else 
			if (getcliente()[x].equals("2") )
		
				setCliente(theCliente);
		
			else 
				System.out.print("Opção Invalida.");
		
	}while((getcliente()[x] =! "1") || (getcliente()[x] =! "2") );[/code]

se for necessario eu mando o restante do codigo

  1. Vc não quer comparar strings com =! use equals()
    2)Não é “sexo” é “genero”. Escolher o “genero” do cliente.

Se eu mudar para equals meu programa vai ficar repetindo o “do” enquando eu nao digitar 1 ou 2… certo?

no entando o que eu quero eh que meu programa fique repetindo o “do” enquando eu NAO digitar ’ 1’ ou ‘2’ que são as opcoes validas (masculino é 1 e feminino é 2)

Ou seja, acho que o equals logicamentes nao daria certo?

2-Desculpa! ja mudei aqui valeu pelo toque (genero do cliente e nao sexo do cliente)

??

rafa-projeseg… O que nosso colega sergiotaborda quis dizer, é que você deve utilizar sempre o equals/equalsIgnoreCase para comparar Strings…

Se você quer comparar, mas validando quando for false, utilize o exclamação “!” à frente da comparação realizada.

Coloquei o “equals” e com “!” na frente da comparação.

No entando o erro que esta dando agora é de logica.
Quando eu entro com 1 ou 2 o meu programa entra num loop infinito. (sempre pede p eu informar o gênero do cliente).

Não estou conseguindo sair do loop…

Segue codigo abaixo:

[code]do
{

		System.out.print("Selecione qual o gênero do cliente: \nDigite (1) para Masculino. \nDigite (2) para Feminino. \nDigete O numero correspondente: ");
		theCliente[x] = input.nextLine(); 
		setCliente( theCliente );
		
		if ( getcliente()[x].equals("1") )
		{
		
			theCliente[x] = "Masculino";
			setCliente(theCliente);
		}
		else 
			if (getcliente()[x].equals("2") )
			{	
				theCliente[x] = "Feminino";
				setCliente(theCliente);
			}
			else 
				System.out.print("Opção Invalida.\n\n");
		}
	while

( ( !getcliente()[x].equals(“Masculino”) ) || ( !getcliente()[x].equals(“Feminino”) ) );[/code]

Alguem pode me ajudar?

Mesmo sem conhecer detalhes sobre as variáveis usadas :shock: ,
acho que o código seguinte funcionará:

  1. do
  2.     {  
    
  3.         System.out.print("Selecione qual o sexo do cliente: \n(1)-Masculino. \n(2)Feminino. ");  
    
  4.         theCliente[x] = input.nextLine();   
    
  5.         //setCliente( theCliente );    -->Não actualize o cliente ainda
    
  6.         if ( theCliente[x] .equals("1") ){  //if ( getcliente()[x].equals("1") )  -->use a variável  theCliente[x] em vez de getcliente()[x]
    
  7.            theCliente[x] = "Masculino"; 
    
  8.             setCliente(theCliente);  
    
  9.       }
    
  10.         else   
    
  11.          if ( theCliente[x] .equals("2") ){ // if (getcliente()[x].equals("2") )  -->use a variável  theCliente[x] em vez de getcliente()[x]
    
  12.                 theCliente[x] = "Feminino";  
    
  13.                 setCliente(theCliente);  
    
  14.           }
    
  15.             else   
    
  16.                 System.out.print("Opção Invalida.");  
    
  17.     }while( ( !getcliente()[x].equals("Masculino") ) || ( !getcliente()[x].equals("Feminino") ) );

parceiro, fiz conforme voce sitou acima, e esta dando o mesmo erro de logica!

vo te mandar classe desses metodos:

[code]import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class classCliente extends classVendedor
{
private String[] cliente = new String[4];//variaveis
String op;

Scanner input = new Scanner(System.in);


public void setCliente( String[] cliente1)//metodo set e get cliente
{
	cliente = cliente1;
}

public String[] getcliente()
{
	return cliente;
}//fim cliente

public void cadastraDadosCliente()//metodo armazena nome cliente
{
	int x = 0;
	String[] theCliente = new String[4];
	System.out.print("-->Informações cadastrais do Cliente.\n");
	System.out.printf("%s, por favor digite o nome do cliente: ", getVendedor());
	theCliente[x] = input.nextLine();
	setCliente( theCliente );
	
	x++;
	
	System.out.print("Digite o número do CPF do cliente: ");
	theCliente[x] = input.nextLine();
	setCliente( theCliente );
	
	x++;
	
	System.out.print("Digite o nome da cidade: ");
	theCliente[x] = input.nextLine();
	setCliente( theCliente );
	
	x++;
	
	do
	 { 
		 System.out.print("Selecione qual o sexo do cliente: \n(1)-Masculino. \n(2)Feminino. "); 
		 theCliente[x] = input.nextLine(); 
			 
		 if ( theCliente[x] .equals("1") ) //if ( getcliente()[x].equals("1") ) -->use a variável theCliente[x] em vez de getcliente()[x] 
		 {
			 theCliente[x] = "Masculino"; 
			 setCliente(theCliente); 
		 }
		 else 
			 if ( theCliente[x] .equals("2") ) // if (getcliente()[x].equals("2") ) -->use a variável theCliente[x] em vez de getcliente()[x] 
			 {
				 theCliente[x] = "Feminino"; 
				 setCliente(theCliente); 
			 }
			 else 
				 System.out.print("Opção Invalida."); 
		 
		}
	while( ( !getcliente()[x].equals("Masculino") ) || ( !getcliente()[x].equals("Feminino") ) );
}
public void chamaCadastroCliente()//metodo chama os dados do cliente e exibe na tela
{	
	cadastraDadosCliente();

	for(int y=0; y<4; y++)
	{
		System.out.printf("%s\n",getcliente()[y]);
	}
	
	System.out.print("Os dados cadastrais estão OK? (S/N)");
	op = input.nextLine();
	if(op.equalsIgnoreCase("s") )
	{
		classTabela metTabela = new classTabela();
		metTabela.tabelaVeiculos();
	}		
	else
		chamaCadastroCliente();
}

}[/code]

Muito obrigado a todos pela ajuda!

resolvido!

jpfguambe a solução foi trocas o “||” por “&&” no “while”

segue:

while( ( !getcliente()[x].equals("Masculino") ) && ( !getcliente()[x].equals("Feminino") ) );