1 读取输入
1.1 Scanner 类
1)文件输入
// 如果是 win 系统,使用双反斜杠,"c:\\mydirectory\\myfile.txt" ,每个 \ 需要额外的一个 \。
Scanner scan = new Scanner(Paths.get("myfile.txt"),"UTF-8");
2)标准输入
Scanner in = new Scanner(System.in);
- nextLine():下一行
- next():下一个单词(以空格分割)
- nextInt()
- nextDouble()
1.2 Console 类
因为输入是可见的,所以 Scanner 类不适用于控制台读取密码,可以使用 Console 类,但每次只能读取一行,而且在 IDE 上无法使用:
Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");
2 格式化输出
2.1 printf 方法
一种方法是 Java 沿用了 C 语言的 printf 方法
//输出3,333.33
System.out.printf("%,.2f", 10000 / 3.0);
2.2 String.format
另一种方法可以用 String.format 方法创建一个不输出的格式化字符串。
String name = "boy";
int age = 10;
String message = String.format("Hello,%s.Next year,you'll be %d \n", name, age);
System.out.printf(message);
// 输出 Hello,boy.Next year,you'll be 1
2.3 文件输出
写入文件需要构造一个 PrintWriter 对象,此 PrintWriter 类与 System.out(是 PrintStream 类对象)在 print、println、printf 上用法相同。
//在构造器中只需要提供文件名,没有的话会新建,如果之前已存在会覆盖
PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
用相对路径时,文件位于 java 虚拟机启动路径的相对位置。可以调用 System.getProperty(“user.dir”) 找到。
2.4 printf 格式化符号
1)类型字符
符号 | 含义 |
---|---|
%a | 浮点数、十六进制数字和p-记数法(c99 |
%A | 浮点数、十六进制数字和p-记法(c99) |
%c | 一个字符(char) |
%C | 一个ISO宽字符 |
%d | 有符号十进制整数(int) |
%e | 浮点数、e-记数法 |
%E | 浮点数、E-记数法 |
%f | 单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数) |
%g | 根据数值不同自动选择%f或%e. |
%G | 根据数值不同自动选择%f或%e. |
%i | 有符号十进制数(与%d相同) |
%o | 无符号八进制整数 |
%p | 指针 |
%s | 对应字符串char*(%s = %hs = %hS 输出 窄字符) |
%S | 对应宽字符串WCAHR*(%ws = %S 输出宽字符串) |
%u | 无符号十进制整数(unsigned int) |
%x | 使用十六进制数字0xf的无符号十六进制整数 |
%X | 使用十六进制数字0xf的无符号十六进制整数 |
%% | 打印一个百分号 |
%I64d | 用于INT64 或者 long long |
%I64u | 用于UINT64 或者 unsigned long long |
%I64x | 用于64位16进制数据 |
2)格式字符
格式字符用以指定输出项的数据类型和输出格式。
- d、o、x、u 格式:
- hd:输出短整形
- ld、Ld:输出长整型数据(long)
- md:m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出
- s 格式:
- %ms:输出的字符串占 m 列,如果字符串本身长度大于 m,则突破获 m 的限制,将字符串全部输出。若串长小于 m,则左补空格。
- %-ms:如果串长小于 m,则在 m 列范围内,字符串向左靠,右补空格。
- %m.ns:输出占 m 列,但只取字符串中左端 n 个字符。这 n 个字符输出在 m 列的右侧,左补空格。
- %-m.ns:其中 m、n 含义同上,n 个字符输出在m列范围的左侧,右补空格。如果 n>m,则自动取 n 值,即保证 n 个字符正常输出。
- f 格式:
- %f:不指定宽度,整数部分全部输出并输出 6 位小数。
- %m.nf:输出共占 m 列,其中有 n 位小数,若数值宽度小于 m 左端补空格。
- %-m.nf:输出共占 m 列,其中有 n 位小数,若数值宽度小于 m 右端补空格。
- e 格式:
- %e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
- %m.ne 和 %-m.ne:m、n 和“-”字符含义与前相同。此处 n 指数据的数字部分的小数位数,m 表示整个输出数据所占的宽度。
- g 格式:自动选 f 格式或 e 格式中较短的一种输出,且不输出无意义的零。