Estou com uma duvida de como fazer p/ ler uma string, do tipo, 5+5 e a partir dai, imprimir no video… Ou seja, eu nao sei como fazer(o que usar) p/ percorrer uma string e comparar o caractere se ele é um simbolo(*) ou numero…
Creio q seja facil… Gostaria de apenas uma demonstracao de como fazer p/ ler a string e armazenar seus simbolos.
String str = “5+5”;
e a partir desse pto, percorrer essa string e armazenar os 3 caracteres, comparando sempre se ele é um simbolo (*±/)
galera, é só uma ajuda… dessa parte de código… o resto eu sei…
Stringteste="5+5*49-32";for(inti=0;i<teste.length();i++){try{Integer.parseInt(String.valueOf(teste.charAt(i)))}catch(NumberFormatExceptionex){//ele só entra aki... c o caracter de agora não for um número//aqui vc tem certeza que não é número...//use String.valueOf(teste.charAt(i)) para saber qual é o caracter// ai vc ve o q faz com ele}}
seguinte… não sei se é essa sua dificuldade… já vi varias pessoas tentando passar Expressào aritimetica e fazer as contas…
axo q é um processo meio complicadinho…
xeio de IFs… e Cases…
boa sorte ai… espero ter ajudado… era essa a duvida?
M
matheusPJ
juliano, vc pode usar as funções static de Character:
mas o unico problema é que, depois de eu comparar a STRING, como q faço, ou q função uso p/ copiar esse numero e joga-la p/ um vetor??
Acho q é só isso… depois as condições eu ja fiz certinho… só falta eu pegar esses numeros jogar em um vetor e depois eu faço as contas…
aguardo galera… valews msmo…
valew
T
TomazLavieriPJ
pra jogar num vetor??
vai ter q fazer… vetor.add(new Integer(12));
pq naum da pra por objetos primitivos num vetor…
ai tem q ser com o Integer Float… essas coisas
vetor.add(new Integer(value));
goooood loock
J
JulianodbPJ
blz kra, entendi sim… e até deu ceu certo…
mas como fazer p/ pegar, vamos supor, o 1o e o 3o elemento dessa string, como em uma operacao de 5+5, gostaria de retiirar os dois 5 p/ trabalhar com eles, entendeu… tem como fazer isso??? retirar o elemento de uma string e depois utiliza-lo???
aguardo… ajuda novamente…
valews
M
matheusPJ
String str = "5+5";
int num = Integer.parseInt( str.charAt( 0 ) );
..algo como isso? :?:
T
TomazLavieriPJ
tem como fazer sim…
Strings="5+5";//pegando o 1º elementointprimeiroTermo=Integer.parseInt(String.valueOf(s.charAt(0));//pegando o 1º elementointsegundoTermo=Integer.parseInt(String.valueOf(s.charAt(2));
bom ai ele pega o 1 caracter e poem em primeiroTermo e o segundo poem em segundoTermo …
abraços
T
TomazLavieriPJ
"matheus":
String str = "5+5";
int num = Integer.parseInt( str.charAt( 0 ) );
..algo como isso? :?:
afff respondeu enquanto eu escrevia =[ .... uhuhhuhu :fart:
J
JulianodbPJ
é isso ai galera… show… consegui aqui…
valew msmo… agora, como q eu faço, para comparar se o q estou pegando é um operador, no caso de eu ter uma straing de tamanho definida pelo usuario… ou seja… o usuario digita la… 5+5*2-3…
como q percorro essa string e comparo elemento por elemento??
importjava.lang.*;publicclassExec02{staticpublicvoidmain(String[]args)throwsException{BufferedReaderteclado=newBufferedReader(newInputStreamReader(System.in));System.out.println("Entre com a conta: ");Stringentrada=teclado.readLine();for(inti=0;i<entrada.length();i++){if(Character.isDigit(entrada.charAt('*')))System.out.println("Caractere: "+i);}}}
ele da erro qdo coloco uma expressa qquer… nao era p/ funcionar se eu colocassse 1*1 ele nao teria de buscar o caractere * e imprimi-lo?? q estou fazendo de errado??
aguardo e valews…
[color=“darkblue”]Editado para colocar o BBCode (AnotherX)[/color]
T
TomazLavieriPJ
vc tem q usar
entrada.charAt(i) …
ai ele verificar o caracter q está na posição i…
akele teste só verifica c é numero ou não…
c não for número vc entende q é um operador…
outra dica é vc dar um trim na sua entrada… pra apargar os epaços a +
entrada = entrada.trim();
boa sorte
J
JulianodbPJ
Kra, blzera aqui… Mas to com um novo problema aqui… veja só o codigo…
staticpublicvoidmain(String[]args)throwsException{BufferedReaderteclado=newBufferedReader(newInputStreamReader(System.in));System.out.println("Entre com a conta: ");Stringentrada=teclado.readLine();entrada=entrada.trim();charj='*';for(inti=0;i<entrada.length();i++){if(Character.isDigit(entrada.charAt(i)))intprimeiroTermo=Integer.parseInt(String.valueOf(entrada.charAt(i)));if(!(Character.isLetterOrDigit(entrada.charAt(i))))System.out.println("Caractere: "+i);
}
}
}
exatamente qdo vou executar o 1o IF, ele da pane… estou vendo se é numero e se SIM, ele guarda p/ min, nao esta certo???
pq esta dando erro??? aguardo kra… e estou conseguindo… to qse la…
valew msmo e aguardo…
T
TomazLavieriPJ
Hummm....
é... o isDitgit num verifica c é numero não...
axo que vc tem q fazer com o TRY { } Catch {} .... igual ta num post meu Mais acima.... procura ai... ta aki no meio destes posts...
outra coisa... postas os codigos com o bbcode... tenta por ele entre as tags [code] ...
vou indo... tenho q durmir... t +
J
JulianodbPJ
valews kra… é isso ai…
mas qual a definicao p/ o TRY??? ele proteje o codigo, por isso q nao da a msg de erro???
certim aqui kra…
show… valews msmo…
T
TomazLavieriPJ
Não é bem uma proteção…
é o seguinte… vou por um comentário em cada linha
try //tenta executar o que estiver dentro do { }
{
//aki vai o que vc quer tentar fazer
}
catch (FormatNumberException ex) //aqui ele segura a exceção do tipo
//FormatNumberException e guarda em ex
{
//aki vc define como tratar c houver uma exeção do tipo definido no catch
}