Java Tutorial/Development/Formatter Flags
Содержание
- 1 Demonstrate the %g format specifier.
- 2 Demonstrating the space format specifiers
- 3 format: %#o
- 4 format: %#x
- 5 Left justification
- 6 The 0 flag
- 7 The Comma Flag(,) : to add grouping specifiers
- 8 The # Flag
- 9 The %n inserts a newline: the %n and %% format specifiers
- 10 The Space, +, 0, and "(" Flags: To show a "+" sign before positive numeric values, add the + flag
- 11 To show negative numeric output inside parentheses, rather than with a leading -, use the "(" flag
- 12 Using the Format Flags
Demonstrate the %g format specifier.
<source lang="java">
import java.util.Formatter; public class Main{
public static void main(String args[]) { Formatter fmt = new Formatter(); for (double i = 1000; i < 1.0e+10; i *= 100) { fmt.format("%g ", i); System.out.println(fmt); } }
} /* 1000.00 1000.00 100000 1000.00 100000 1.00000e+07 1000.00 100000 1.00000e+07 1.00000e+09
- /</source>
Demonstrating the space format specifiers
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("% d", -100); System.out.println(fmt); fmt = new Formatter(); fmt.format("% d", 100); System.out.println(fmt); fmt = new Formatter(); fmt.format("% d", -200); System.out.println(fmt); fmt = new Formatter(); fmt.format("% d", 200); System.out.println(fmt); }
}</source>
-100 100 -200 200
format: %#o
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%#o", 1); System.out.println(fmt); }
}</source>
01
format: %#x
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%#x", 1); System.out.println(fmt); }
}</source>
0x1
Left justification
By default, all output is right-justified.
You can force output to be left-justified by placing a minus sign directly after the %.
For example, %-10.2f left-justifies a floating-point number with two decimal places in a ten-character field.
<source lang="java">
import java.util.*; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); // Right justify by default. fmt.format("|%10.2f|", 123.123); System.out.println(fmt); // Now, left justify. fmt = new Formatter(); fmt.format("|%-10.2f|", 123.123); System.out.println(fmt); }
}</source>
| 123.12| |123.12 |
The 0 flag
The 0 flag causes output to be padded with zeros rather than spaces.
The 0 flag can be used with all format specifiers except %n.
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%05d", 100); System.out.println(fmt); }
}</source>
00100
The Comma Flag(,) : to add grouping specifiers
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%,.2f", 4356783497.34); System.out.println(fmt); }
}</source>
4,356,783,497.34
The # Flag
The # flag can be applied to the %o, %x, %e, and %f format specifiers.
For %e and %f, the # ensures that there will be a decimal point even if there are no decimal digits.
Preceding the %x specifier with a #, the hexadecimal number will be printed with a 0x prefix.
Preceding the %o specifier with # causes the number to be printed with a leading zero.
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%#e", 1F); System.out.println(fmt); }
}</source>
1.000000e+00
The %n inserts a newline: the %n and %% format specifiers
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("Copying file%nTransfer is %d%% complete", 88); System.out.println(fmt); }
}</source>
Copying file Transfer is 88% complete
The Space, +, 0, and "(" Flags: To show a "+" sign before positive numeric values, add the + flag
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); // Right justify by default. fmt.format("%+d", 100); System.out.println(fmt); }
}</source>
+100
To show negative numeric output inside parentheses, rather than with a leading -, use the "(" flag
<source lang="java">
import java.util.Formatter; public class MainClass {
public static void main(String args[]) { Formatter fmt = new Formatter(); fmt.format("%(d", -100); System.out.println(fmt); }
}</source>
(100)
Using the Format Flags
Formatter uses a set of format flags to control various aspects of a conversion.
A format flag follows the % in a format specification.
FlagEffect-Left justification#Alternate conversion format0Output is padded with zeros rather than spacesspacePositive numeric output is preceded by a space+Positive numeric output is preceded by a + sign,Numeric values include grouping separators(Negative numeric values are enclosed within parentheses