go to previous page   go to home page   go to next page highlighting

System.out.printf("%4d\t $%,1.0f%n", 2020, 39552784.03);  

Answer:

2020     $39,552,784 

This is not the best way to do this, but works, somewhat.


Default Locale

import java.util.Locale;

public class LocaleDemo
{
  public static void main ( String[] args )
  {
    int value = 123456789 ;
    
    System.out.println( "Default Locale = " + Locale.getDefault() );
    System.out.printf( "value = %,12d%n", value );
  }
}

When the Java virtual machine starts running, it creates a default locale object. This object affects the format of strings created by printf(). Depending on the default locale, a program creates different strings for the same number. On my computer (in the US) the above program writes

Default Locale = en_US
value = 123,456,789

The number has been formatted correctly for the locale in which the program is running.

The static method Locale.getDefault() asks the virtual machine for a reference to its default locale object. The println() statement uses that object's toString() method to produce: en_US.

This specifies that the default language is English and the default country is US. Your computer might output a different locale code and may format the number differently.

Recall that a static method can be run without instantiating an object of the class. So the static method getDefault() can be run by using Locale.getDefault().

In Germany the program prints:

Default Locale = de_DE
value =  123.456.789

Locales specify both language and country.


QUESTION 8:

What do you suspect the following fragment writes?

double value = 12345.6789 ;
Locale.setDefault( Locale.FRANCE );

System.out.println( "Default Locale = " + Locale.getDefault() );
System.out.printf( "value = %,10.4f%n", value );

The data type is now float and the locale has been changed.


go to previous page   go to home page   go to next page