Preciso validar uma String ou alguma forma de entrada RESOLVIDO
13 respostas
A
Anna_Paula_Dalmaso
primeiramente: eu iniciei java esse ano na faculdade, então n tnho dominio sobre a linguagem .
Preciso que a entrada string seja validada como variavel, pq eu so posso da entrada com string, ja n sei como resolver isso, grata
publicstaticvoidmain(String[]args){scn=newScanner(System.in);resposta();publicstaticvoidresposta(){booleansair=false;intpesoC,pesoG,idadeC,idadeG,cao,gato,total;Stringtipo,sexo;do{System.out.print("Digite C para cão, G para gato e X para Sair ");tipo=scn.nextLine();try{if(tipo==X){sair=true;}else{if((tipo==C)||(tipo==G)){if(tipo==C){cao++;System.out.print("Digite a idade em meses : ");idade=scn.nextInt();System.out.ptiny("Digite M para macho e F para femea");sexo=scn.nextLine();System.out.print("Digite o peso em kg: ");peso=scn.nextInt();}if(tipo==G){gato++;System.out.print("Digite a idade em meses : ");idade=scn.nextInt();System.out.ptiny("Digite M para macho e F para femea");sexo=scn.nextLine();System.out.print("Digite o peso em kg: ");peso=scn.nextInt();}}else{System.out.print("Opção invalida, tente novamente");}}}catch(NumberFormatExceptione){System.out.println("Opção Invalida");scn.next();}}while(sair=false);total=cao+gato;System.out.format("Numero total de animais atendidos: %f\nPercentual de caes: %\nPercentual de gatos: ",total,cao,gato);}
Primeiro, não é recomendado usar == para comparar Strings.
Use equals() ou equalsIgnoreCase().
Vejo que vc quer verificar se digitaram “C”, “G” ou “X”.
Use algo como tipo.equalsIgnoreCase(“C”)
Faça o mesmo para as outras opções.
A
Anna_Paula_Dalmaso1 like
obrigada! vou tentar!
F
Fefo801 like
Já experimentou fazer com switch / case ?
E if (tipo.equals(“X”) { break; }
Outra coisa:
while(!sair);
Apenas um “=” é atribuição de valor.
Conseguiu fazer dar certo?
H
hugokotsubo1 like
sair é um boolean, então seria apenas:
while(!sair);
A
Anna_Paula_Dalmaso
Funciona com equals, agr meu problema é que entra em loop e é isso`
do{System.out.print("DigiteCparacão,GparagatoeXparaSair");tipo=scn.nextLine();try{if((tipo.equals("C"))||(tipo.equals("G"))||(tipo.equals("X"))){if(tipo.equals("X")){sair=true;}if(tipo.equals("C")){cao++;System.out.print("Digiteaidadeemmeses:"); idadeC = scn.nextInt(); System.out.println("DigiteMparamachoeFparafemea"); sexo = scn.next(); System.out.println("Digiteopesoemkg:"); pesoC = scn.nextInt(); maior = idadeC; if (idadeC < maior) { maior = idadeC; } } if(tipo.equals("G")) { gato++; System.out.print("Digiteaidadeemmeses:"); idadeG = scn.nextInt(); System.out.println("DigiteMparamachoeFparafemea"); sexo = scn.next(); System.out.println("Digiteopesoemkg:"); pesoG = scn.nextInt(); menor = idadeG; if (idadeG < menor) { menor = idadeG; menorP = pesoG; } } }else{ //System.out.println("Opçãoinvalida,tentenovamente\n"); } }catch (InputMismatchException e){ System.out.println("OpçãoInvalida"+e); } }while(sair = true); total = cao + gato; caoP = (cao* 100)/total; gatoP = (gato*100)/total; System.out.format("Numerototaldeanimaisatendidos:%f\nPercentualdecaes:%f\nPercentualdegatos:%f\nCãomaisveio:%f\nPesodagatinhanene:",total,caoP,gatoP);}
D
davidbuzatto
do{
...
}while(!sair);
ou
do{
...
}while(sair==false);
N
Nicolas2008
Teve uma linha que ficou ptiny ao invés de print
H
hugokotsubo
O operador = é de atribuição. Ou seja, sair recebe o valor true, e depois o while verifica se o valor é true (e no caso, sempre será).
Para comparar, use ==:
while(sair==true);
Se bem que para valores booleanos é desnecessário comparar desta forma, basta fazer:
while(sair);
R
RoinujNosde1 like
Na verdade pela lógica dela tem que ser while (!sair).
H
hugokotsubo
Sim, a gente já tinha falado isso anteriormente, sei lá porque ela mudou (não testei o código porque estou no celular, só dei uma olhada por cima e vi esse erro)
F
Fefo802 likes
importjava.util.Scanner;publicclassquestao2{publicstaticvoidmain(String[]args){Scannerscn;scn=newScanner(System.in);booleansair=false;intpeso,idade,cachorro,gato,total;Stringtipo,sexo;cachorro=0;gato=0;do{System.out.println("\nDigite C para cachorrinho, G para gato e X para sair: ");tipo=scn.nextLine();try{if(tipo.equalsIgnoreCase("X")){sair=true;}elseif(tipo.equalsIgnoreCase("C")){cachorro++;System.out.println("Digite a idade, em meses: ");idade=Integer.parseInt(scn.nextLine());System.out.println("Digite M para macho ou F para femea: ");sexo=scn.nextLine();System.out.println("Digite o peso, em kg: ");peso=Integer.parseInt(scn.nextLine());}elseif(tipo.equalsIgnoreCase("G")){gato++;System.out.println("Digite a idade, em meses: ");idade=Integer.parseInt(scn.nextLine());System.out.println("Digite M para macho ou F para femea: ");sexo=scn.nextLine();System.out.println("Digite o peso, em kg: ");peso=Integer.parseInt(scn.nextLine());}else{System.out.print("Opção invalida, tente novamente");}}catch(NumberFormatExceptione){System.out.println("Opção Invalida");scn.next();}}while(!sair);total=cachorro+gato;System.out.println("Numero total de animais atendidos: "+total);System.out.println("Numero de cachorros: "+cachorro+" = "+((cachorro*100)/total)+"%");System.out.println("Numero de gatos: "+gato+" = "+((gato*100)/total)+"%");}}
A
Anna_Paula_Dalmaso
Eu fiquei tanto tempo em cima q deu nó na cabeça, mas consegui resolver, só n cheguei a postar o codigo aqui, pois estava fazendo outras coisas ao mesmo tempo e estava difcil dar atenção, grata a todos pela ajuda!
publicstaticvoidmain(String[]args){scn=newScanner(System.in);resposta();}publicstaticvoidresposta(){booleansair=false;intpesoC,pesoG,idadeC,idadeG,cao=0,gato=0,total=0,caoP,gatoP;Stringtipo,sexo;intmaior=0,menor=0,menorP=0;do{System.out.print("Digite C para cão, G para gato e X para Sair ");tipo=scn.nextLine();try{if((tipo.equals("C"))||(tipo.equals("G"))||(tipo.equals("X"))){if(tipo.equals("X")){sair=true;}if(tipo.equals("C")){cao++;System.out.print("Digite a idade em meses : ");idadeC=scn.nextInt();System.out.println("Digite M para macho e F para femea");sexo=scn.next();System.out.println("Digite o peso em kg: ");pesoC=scn.nextInt();maior=idadeC;if(idadeC<maior){maior=idadeC;}}if(tipo.equals("G")){gato++;System.out.print("Digite a idade em meses : ");idadeG=scn.nextInt();System.out.println("Digite M para macho e F para femea");sexo=scn.next();System.out.println("Digite o peso em kg: ");pesoG=scn.nextInt();menor=idadeG;if(idadeG<menor){menor=idadeG;menorP=pesoG;}}}}catch(InputMismatchExceptione){System.out.println("Opção Invalida"+e);}}while(sair!=true);total=cao+gato;caoP=(cao*100)/total;gatoP=(gato*100)/total;System.out.println("Numero total de animais atendidos:"+total);System.out.println("Numero de caes:"+cao);System.out.println("Percentual de caes:"+caoP);System.out.println("Numero de gatos:"+gato);System.out.println("Percentual de gatos:"+gatoP);System.out.println("Cão mais veio:"+maior);System.out.println("Peso da gatinha nene:"+menorP);}