输入输出:
输入:要通过控制台进行输入,首先需要构造一个Scanner对象,它附属于”标准输入流”System.in。如:Scanner in=new Scanner(System.in);
Scanner类的方法:nextLine:输入一行 String firstName=in.nextLine();
用nextLine的原因是可能输入行中包含空格。
读取的是单词(以空白符作为分隔符)用法:String firstName=in.nex();
读取一个整数:int age=in.nextlt;
读取一个浮点数:double age=in..nextdouble();
检查输入中是否还有单词:boolean hasNext()
检查是否还有表示整数或浮点数的下一个序列booleanhasNextInt();
BooleanhasNextDouble();
用指定的输入流创建一个Scanner对象:Scanner(InputStream in)
读取下一行的内容:String next();
打印“标准输入出流”(即控制台窗口),调用System.out.println方法(System.out.print前者有回者,后者回车。)
JAVA的包:
JAVA的基本包是java.lang包,,使用的类不是在java.lang包中时,要用import将对应的包加载进来。
使用输入对话框:
String input=JOptionPane.showInputDialog(promptString)返回值是字符串
如果要用字符可以转换成数值:Integer.parselnt
Double.parseDouble
如:Stringinput=JOptionPane.showInputDialog(“How old are you?”);
Intage=Integer.parselnt(Int);
JOptionPane类定义在javax.swing包中.
Static String showInputDialog(Objectmessage) 带确定取消
注意点:调用JPptionPane.showInputDialog时,需要用System.exit(0)结束应用程序。这是因为当显示一个对话框时,就启动了一个新的控制线程。在main方法退出后,新线程并没有自动终止,要想终止所有的线程,需要调用System.exit方法。
Java.lang.System
Static void exit (int status)
终止虚拟机并将状态码传递给操作系统。非0的状态码表示出错。
JAva的输出
输出:
System.out.print(x)- 可以使用System.out.print(x) 打印出x对应的数据类型的最大非数字位数。
Printf方法:打印格式化数值。如:System.out.printf(“%8.2f”,x) 意思为用8个字符串的宽度和小数点后两位的精度打印x,也就是打印出一个空格,和七个字符。Eg: 3333.33
Prinftf的参数:如System.out.printf(“Hello,%s”,Next year,you’ll be %d,name,age);
转换符 | 类型 | 举例 |
d | 十进制整数 | 159 |
x | 十六进制整数 | 9f |
O | 八进制整数 | 237 |
F | 定点浮点数 | 15..9 |
E | 指数浮点数 | 1.59e+01 |
G | 通用浮点数(e和f较短的) |
|
A | 十六进制浮点数 | 0x1.fccdp3 |
S | 字符串(可以使用s字符串格式化任意对象) | Hello |
C | 字符 | H |
B | 布尔 | True |
H | 散列码 | 4262b2 |
Tx | 日期时间 | 见表3-7 |
% | 百分号 | % |
n | 与平台有关的行分隔符 |
|
Prinft的标志:System.out.print(“5,.2f”,10000.3.0)
使用分组符,并将负数括在括号内 结果:3,333.33
中间的逗号为分组符。
标志 | 目的 | 举例 |
+ | 打印正数和负数的符号 |
|
空格 | 在下载数之前加空格 |
|
0 | 数字前面补0 |
|
- | 左对齐 |
|
( | 将负数括在括号内 |
|
, | 添加分组分隔符 |
|
#(对于f格式) | 包含小数点 |
|
#(对于x或o格式) | 添加前缀0x或0 |
|
^ | 转换为大写 |
|
$ | 指定将被格式的参数索引,例如,%1$d,%1$x |
|
| 将以十进制和十六进制格式打印第1个参数 |
|
< | 格式化前面说明的数值,例如%d%<x以十进制和十六进制打印同一个数 |
|
|
|
|
|
|
|
Printf中的日期格式的转换符:
转换符 | 类型 | 举例 |
c | 完整的日期和时间 | Mon Feb 09 18:05:19 PSt |
F | ISO 8601日期 | 2004-02-09 |
D | 美国格式的日期(月/日/年) | 02/09/2004 |
T | 24小时时间 | 18:05:19 |
r | 12小时时间 | 06:05:19pm |
R | 24小时时间,没有秒 | 18:05 |
Y | 4位数字的年(前面补0) | 2004 |
y | 年的后两位数字(前面补0) | 04 |
C | 年的前两位数字(前面补0) | 20 |
B | 月的完整拼写 | February |
b或h | 月的缩写 | Feb |
m | 两位数字的月 | 02 |
d | 两位数字的日(前面补0) | 09 |
e | 两位数字的日(前面不补0) | 9 |
A | 星期几的完整拼写 | Monday |
a | 星期几的缩写 | Mon |
j | 三位数字的年中的日子(关面补-0),在001~336之间 | 069 |
H | 两位数字的小时,前面补0,0~23之间 | 18 |
k | 两位数字的小时,前面不补0,0~23之间 | 18 |
l | 两位数字的小时(前面补0),在001到366之间 | 06 |
l | 两位数字的小时(前面不补0),在001到366之间 | 6 |
M | 两位数字的分钟(前面补0)0~23之间 | 05 |
S | 两位数字的秒,前面补0 | 19 |
L | 三位数字的毫秒(前面补0) | 047 |
N | 九位数字的毫微秒(前面补0) | 047000000 |
P | 上午或下午大写的标志 | PM |
p | 下午或下午小定标志 | pm |
z | 从GMT起,RFC822数字位移 | -0800 |
Z | 时区 | PST |
s | 从格林威治时间1970-01-01 00:00:00起的秒数 | 107888319 |
E | 从格林威治时间1970-01-01 00:00:00起的毫秒数 | 1078884319047 |
格式化的字符串指出要被格式华的参数索引有两种形式如:
- System.out.printf(“%1$s%2$te,%2$tY”,”Due date”,new Date()); 这种方法使用时紧跟在%后面,以$终止
- System.out.printf(“5s%tB%<te”,”Due date”,new Date()); 使用< 标志。
注意:索引值是从1开始的而不是从0开始的。如%1$格式化的是第1个参数。
格式说明符的语法图?
String.format(静态的方法)和printf都是格式化字符串,两者的区别在于String.format是创建一个格式的字符串,不打印;而printf是打印格式化字符串。
PS:到目前为止现在接触到的静态方法有:String.format
非静态方法:String.format。