Ayuda con Printf - Por favor

Iniciado por ComputerScienceSolutions, 19 Junio 2014, 05:43 AM

0 Miembros y 1 Visitante están viendo este tema.

ComputerScienceSolutions

Hola amigos , tengo un pequeño problema que me esta resultando un dolor de cabeza
Tengo que imprimir mediante el comando System.out.printf  los siguientes resultados:

123098
00123098
+123098
123,098
+123,098
3.141593
3.142
3.142
3.142
3,1416

Pero solo llego a imprimir esto:

123098
00123098
+123098
123.098
+123.098
3,141593
3,142
3,142
3,142
3,1416

La diferencia esta en las comas y puntos, no como hacerle para que me aparezcan comas en donde aparezcan puntos y viceversa.

Tengo esto . mi codigo:

long numero=123098;
double pi=Math.PI;

System.out.printf("%d %n", numero);
System.out.printf("00%d %n",numero);
System.out.printf("%+d %n",numero);
System.out.printf("%,3d %n",numero);
System.out.printf("%+,3d %n",numero);
System.out.printf("%f %n",pi);
System.out.printf("%.3f %n",pi);
System.out.printf("%.3f %n",pi);
System.out.printf("%.3f %n",pi);
System.out.printf("%.4f %n",pi);



gordo23

Buenas, tenés dos formas de usar printf(), la primera es como la estás usando ahora mismo:

printf(String format, Object... args);

Esta utiliza la localización por default que tiene tu sistema operativo, yo por ejemplo tengo configurado mi sistema operativo con localización en Argentina, entonces los miles me los divide con un punto y los decimales con una coma. El otro método es:

printf(Locale loc, String format, Object... args);

Este agrega un argumento al principio para cambiar la configuración de localización de la salida. Como vos querés que salga podés utilizar localización estadounidense:

System.out.printf(Locale.US, "%,3d %n", numero);


Saludos y suerte.-