pede para a pessoa digitar um numero real (double) e a pessoa usa “,” (virgula) ao inves do padrão do java, “.” (ponto)… Como vocês lidam com isso?
Claro, tem o try e o catch lá… Quando entra no catch eu coloquei uma msg para a pessoa usar “ponto” … Como vocês lidam com isso?
Alguem ai ja deve ter um algoritmozinho pronto pra alterar “,” para “.” no software né??
Se ninguem tiver, ou não quiser compartilhar (Bláááhhh… ),
eu mesmo criarei e postarei aqui depois…
**Detalhe, pesquisei aqui no forum sobre isso,
nao achei nada parecido, posso até ter procurado mal…
hehehe
import java.io.*;
class P27
{
public static void main(String args[])
{
String s;
double n1,np2,np3,rq, nac,nab;
DataInputStream d;
try
{
System.out.println(“digite um numero real”);
d=new DataInputStream(System.in);
s=d.readLine();
n1=Double.parseDouble(s);
nac=Math.ceil(n1);
nab=Math.floor(n1);
np2=Math.pow(n1,2);
np3=Math.pow(n1,3);
rq=Math.sqrt(n1);
System.out.println("o numero digitado foi: "+n1);
System.out.println("o numero arredondado para cima e: "+nac);
System.out.println("o numero arredondado para baixo e: "+nab);
System.out.println("o numero elevado a 2 e: "+np2);
System.out.println("o numero elevado a 3 e: "+np3);
System.out.println("a raiz quadrada desse numero e: "+rq);
}
catch(IOException e)
{
System.out.println("erro na entrada de dados ");
}
catch(NumberFormatException e)
{
System.out.println("erro de conversão");// aqui pode mudar a mensagem,pedindo um numero real ex(1.88)
}
}
Eu sei “tratar erros” Anime e agradeço a ajuda… Como você não entendeu o que eu quis dizer (provavelmente eu expliquei mal), vou te contar meu EX problema ta?
Tinha um formulario para a pessoa digitar um numero real …
ai eu recebia o resultado em um double mais ou menos assim:
double num = Double.parseDouble(DigiteAqui.getText() );
ai, Se a pessoa digitasse “,70” por exemplo, como eu tratei o erro né, ele caia dentro do catch …
Ai usando o método replace que nosso amigo ai disse,
eu pude fazer o seguinte:
String r = DigiteAqui.getText();
r = r.replace(',','.');
double num = Double.parseDouble(r);
aí ele parou de entrar no catch por causa de “virgula”… só se o cara digitar um char msmo tipo ‘a’, ‘b’, ‘c’
abraços,
obrigado pela tentativa de ajuda…
O que vale é a vontade
Um milhão e trezentos mil. E ciquenta e cinco décimos
1.300.000,55 --> tem dois pontos e uma vírgula, ficar tratando isso é uma merda, se usar o DecimalFormat, fica muito mais fácil, além de que, se depois você mudar de idéia por algum motivo e quiser que o mesmo número tenha o formato das calculadoras (pelo menos a minha é assim):
1’300’000.55 é só trocar a máscara do DecimalFormat, o resto nem precisa mudar
[edit]Post acima na frente por apenas 14 segundos O_O … nem tinha visto quando submeti[/edit]
uma vez uma prof de matematica me disse que era incorreto usar ponto para separar as casas (1.000,00), que isso era so para facilitar a leitura… kkkkkkkk Fiquei com isso na cabeça… por isso nem lembrava disso hehehe… mas aqui, o software que to fazendo é para dono de bar, buteco… E eu estou pedindo o valor que a pessoa deu para eu retornar o troco para ele… Acho que o replace da conta do recado…
Mas mesmo assim,
vou estudar o NumberFormat, por que provavelmente vou precisar dele no futuro…
E o NumberFormat também formata a saída do seu número, por exemplo, o NumberFormat moeda = NumberFormat.getCurrencyInstance(new Locale("pt","BR"));
Double valor = new Double(1.99);
String valorEmReais = moeda.format(valor);
System.out.println(valorEmReais);
Creio que o código seja assim mesmo, mas dê uma olhada na API para aprofundar mais… A saída deve ser R$1,99 aqui no Brasil, na europa ele pega o símbolo do euro