基本程序设计语法
输入输出
-
读取输入
Scanner in = new Scanner(System.in);//构造Scanner对象,并与“标准输入流” System.in 关联 System.out.println("What is your name?"); String name = in.nextLine();//nextLine方法将输入一行 String firstName = in.next();// 读取一个单词,以空白符作为分隔符 System.out.println("How old are you?"); int age = in.nextInt();// 读取一个整数 int num = in.nextDouble();// 读取一个浮点数
- 实例1:
import java.util.*; /** * This program demonstrates console input. */ public class InputTest { public static void main(String[] args){ Scanner in = new Scanner(System.in); // get first input System.out.print("What is your name? "); String name = in.nextLine(); // get second input System.out.print("How old are you? "); int age = in.nextInt(); // display output on console System.out.println("Hello, "+name+". Next year, you'll be "+(age+1)); } }
-
格式化输出
print的转换符
转换符 | 类型 | 举例 | 转换符 | 类型 | 举例 | |
---|---|---|---|---|---|---|
d | 十进制整数 | 159 | s | 字符串 | Hello | |
x | 十六进制整数 | 9f | c | 字符 | H | |
o | 八进制整数 | 237 | b | 布尔 | True | |
f | 定点浮点数 | 15.9 | h | 散列码 | 42628b2 | |
e | 指数浮点数 | 15.9e+01 | tx或Tx | 日期时间(T强制大写) | 已经过时,应当使用java.time类 | |
g | 通用浮点数 | — | % | 百分号 | % | |
a | 十六进制浮点数 | 0x1.fccdp3 | n | 与平台有关的行分隔符 | — |
System.out.printf("%8.2f",x);//八个字符宽度和小数点后两个字符的精度
System.out.printf("%,.2f",x);// 逗号标志增加了分组的分隔符
标志 | 目的 | 举例 |
---|---|---|
+ | 打印正数和负数的符号 | +3333.33 |
空格 | 在正数之前添加空格 | > 3333.33< |
0 | 数字前面补0 | 003333.33 |
- | 左对齐 | >3333.33 < |
( | 将负数括在括号内 | (3333.33) |
, | 添加分组分隔符 | 3,333.33 |
#(对于f格式) | 包含小数点 | 3,333. |
#(对于x或0格式) | 添加前缀0x或0 | 0xcafe |
$ | 给定被格式化的参数索引,从1开始。例如,%1$ d,%1$x 将以十进制和十六进制格式打印第一个参数 | 159 9F |
< | 格式化前面说明的数值。例如,%1d%<x 将以十进制和十六进制格式打印同一个数值 | 159 9F |
- 格式说明符的语法图
- 文件的输入与输出
- 对文件进行读取,用File对象构造一个Scanner对象
Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");
- 文件名中包含反斜杠号,需要在每个反斜杠之前再加一个额外的反斜杠:“C:\mydirectory\myfile.txt”
- 对文件进行写入需要构造一个PrintWriter 对象,如果文件不存在,创建该文件。
PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
- 如果用一个不存在的文件构造一个 Scanner, 或者用一个不能被创建的文件名构造一个 PrintWriter,那么就会发生异常。Java 编译器认为这些异常比“ 被零除” 异常更严重。这时就需要使用异常处理。