ViniGodoy 21 de ago. de 2010
Converta a String para um número. Formate com o printf ou com o DecimalFormat.
String x = "1092092" ;
Integer valor = Integer . parseInt ( x );
NumberFormat nf = new DecimalFormat ( "#,###,##0" , new DecimalFormatSymbols ( new Locale ( "pt" , "BR" )));
String formatado = nf . format ( valor );
O método toCharArray() da classe String retorna um array de chars com todos os caracteres da String. Sempre leia o javadoc quando tiver dúvidas desse tipo.
Rafael_ap 21 de ago. de 2010
Caramba, eu usei 50 linhas.
Valeu mesmo Vini.
ViniGodoy 21 de ago. de 2010
Por que seu número está numa String?
Dá para fazer em uma linha, se eu não me engano fica assim:
String x = "1092092";
return String.format(",.0f", Double.parseDouble(x));
É bom conhecer o que o prinf e o format podem fazer por você:
http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html
WendersonLP 21 de ago. de 2010
Rafael_ap 21 de ago. de 2010
Mas eu precisaria de um código que fincionasse para uma string de qualquer
tamanho de caracteres.
Rafael_ap 21 de ago. de 2010
E está numa String por que definiram assim.
ViniGodoy 21 de ago. de 2010
Nesse caso dá pra fazer no braço também:
String x = "1092092109209210920921092092109209210920921092092109209109209210920922" ;
StringBuilder sb = new StringBuilder () ;
int c = 0 ;
for ( int i = x .length - 1 ; i >= 0; i--)
sb .insert ( 0 , x .charAt ( i )) ;
c = ( c + 1 ) % 3 ;
if ( c == 0 && i != 0 ) {
sb .insert ( 0 , "." ) ;
}
}
return sb .toString () ;
Mas só é vantagem se você imaginar que o String nunca vai caber num campo numérico.
Rafael_ap 21 de ago. de 2010
É, está dando um erro no código:
O meu código tá assim:
public class Testao {
/**
* @param args
*/
public static void main ( String [] args ) {
String x = "410681273" ;
StringBuilder sb = new StringBuilder ();
int c = 0 ;
for ( int i = x . length (); i >= 0 ; i -- ) {
sb . insert ( 0 , x . charAt ( i ));
c = ( c + 1 ) % 3 ;
if ( c == 0 ) {
sb . insert ( 0 , "." );
}
System . out . println ( sb . reverse (). toString ());
}
}
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.charAt(Unknown Source)
at Testao.main(Testao.java:12)
Estou tentando descobrir, mas parece algo simples
ViniGodoy 22 de ago. de 2010
Ops, desculpe, era int i = x.length - 1.
Já corrigi ali em cima.