Fiz uma calculadora, mas tô com, dificuldades em como exibir os dígitos para o usuário quando ele digita. Por ex.:
O usuário digitou 9 números e apartir do 4º dígito são exibidos pontos, então se ele digitar, por exemplo, 123 só aparecerá esses dígitos, mas se ele digitar 1234 deve ser exibido um ponto após o primeiro dígito, ficaria assim: 1.234
Se ele digitar 123456789, os dígitos devem ser exibidos assim: 1.234.567.890 e assim sucessivamente.
Já tentei manualmente, mas o método tem um limite de linhas, se passar do limite ele estoura a pilha e o app é encerrado. Então tentei um FOR, mas a dificuldade é na hora de mover o ponto, tipo:
1
12
123
1.234 (aqui o ponto é o segundo dígito)
12.345 (aqui o ponto é o terceiro dígito)
123.456 (aqui o ponto é o quarto dígito)
1.234.567 (aqui o ponto é o segundo e o sexto dígito)
12.345.678 (aqui o ponto é o terceiro e o sétimo dígito)
123.456.789 (aqui o ponto é o quarto e o oitavo dígito)
(…)
Estou usando arraylist do tipo string para inserir os dígitos (números e pontos) nele e depois passar todos seu valor para uma variável do tipo string. Estou fazendo assim pq uso os arrays para remover os dígitos com mais facilidade. Quando o usuário quiser remover dígitos, seja do valor inicial, o operador ou do valor após o operador, é mais prático remover do arraylist, é só usar o “remove” do que ficar removendo char de string, sem falar que a dificuldade de inserir os pontos seria a mesma, se não for pior, enfim.
Alguém tem pelo menos uma idéia de como posso simplificar a coisa?
Olha, a solução que vc me deu, caiu como uma luva! Quando digito apenas números, o format me traz exatamente oq eu quero, mas também estou querendo digitar uma dízima, não estou conseguindo, dá erro quando tento inserir uma virgula ou ponto. Meu app tá funcionando da seguinte forma:
Se eu só inserir no arraylist apenas números (ex.: 123456790), dá tudo certo! Ele formata e me retorna 12.346.790, tranquilo. Mas se eu inserir uma vírgula (ex.: 0,5) ele dá erro assim que digitar a vírgula. Já troquei ela por um ponto adicionando .replace(",", "."); ao arraylist.
Uma coisa é .replace(", “, “”); outra coisa é .replace(”,", “.”); Adicionei os dois no arraylist pra resolver essa, sem resultado.
O erro é For input string: "0," seja digitando uma vírgula ou um ponto.
Vc, ou quem mais estiver vendo esse post, sabe como eu poderia inserir uma vírgula junto a números pra ter uma dízima como retorno? Muito obg!!!
Obg, Abner, me ajudou bastante, mas infelizmente não resolveu o problema da exibição da virgula quando ela era digitada pelo usuário.
Com o NumberFormat, Number e double tratava o que eu queria, mas infelizmente a vírgula ele só exibe depois que algum valor fosse digitado após ela. Pelo que entendi, esse processo é automático. Daí consegui resolver de outra forma!