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.
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);elseif(getcliente()[x].equals("2"))setCliente(theCliente);elseSystem.out.print("Opção Invalida.");}while((getcliente()[x]=!"1")||(getcliente()[x]=!"2"));
Vc não quer comparar strings com =! use equals()
2)Não é “sexo” é “genero”. Escolher o “genero” do cliente.
rafa.spimenta
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.spimenta
??
thundercas
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.
rafa.spimenta
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:
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);}elseif(getcliente()[x].equals("2")){theCliente[x]="Feminino";setCliente(theCliente);}elseSystem.out.print("Opção Invalida.\n\n");}while((!getcliente()[x].equals("Masculino"))||(!getcliente()[x].equals("Feminino")));
rafa.spimenta
Alguem pode me ajudar?
jpfguambe
Mesmo sem conhecer detalhes sobre as variáveis usadas :shock: ,
acho que o código seguinte funcionará:
do
{
System.out.print("Selecione qual o sexo do cliente: \n(1)-Masculino. \n(2)Feminino. ");
theCliente[x]=input.nextLine();
//setCliente( theCliente ); -->Não actualize o cliente ainda
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]
parceiro, fiz conforme voce sitou acima, e esta dando o mesmo erro de logica!
vo te mandar classe desses metodos:
importjava.util.Scanner;importjava.util.regex.Pattern;importjava.util.regex.Matcher;publicclassclassClienteextendsclassVendedor{privateString[]cliente=newString[4];//variaveisStringop;Scannerinput=newScanner(System.in);publicvoidsetCliente(String[]cliente1)//metodo set e get cliente{cliente=cliente1;}publicString[]getcliente(){returncliente;}//fim clientepublicvoidcadastraDadosCliente()//metodo armazena nome cliente{intx=0;String[]theCliente=newString[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);}elseif(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);}elseSystem.out.print("Opção Invalida.");}while((!getcliente()[x].equals("Masculino"))||(!getcliente()[x].equals("Feminino")));}publicvoidchamaCadastroCliente()//metodo chama os dados do cliente e exibe na tela{cadastraDadosCliente();for(inty=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")){classTabelametTabela=newclassTabela();metTabela.tabelaVeiculos();}elsechamaCadastroCliente();}}
rafa.spimenta
Muito obrigado a todos pela ajuda!
resolvido!
jpfguambe a solução foi trocas o “||” por “&&” no “while”