(笔试会经常让我们自己去处理输入输出)
一.输出到控制台
println 输出的内容自带 \n(换行)
print 不带 \n
printf 的格式化输出方式和 C 语言的 printf 是基本一致的.
String msg = "Hello, World!";
System.out.print(msg); // 输出一个字符串, 带换行
System.out.println(msg); // 输出一个字符串, 不带换行
格式化字符串
转换符 | 类型 | 举例 |
---|---|---|
d | 十进制整数 | (“%d”, 100) 100 |
x | 十六进制整数 | (“%x”, 100) 64 |
o | 八进制整数 | (“%o”, 100) 144 |
f | 定点浮点数 | (“%f”, 100f) 100.000000 |
e | 指数浮点数 | (“%e”, 100f)1.000000e+02 |
g | 通用浮点数 | (“%g”, 100f) 100.000 |
a | 十六进制浮点数 | (“%a”, 100)0x1.9p6 |
s | 字符串 | (“%s”, 100) 100 |
c | 字符 | (“%c”, ‘1’)1 |
b | 布尔值 | (“%b”, 100) true |
h | 散列码 | (“%h”, 100) 64 |
% | 百分号 | (“%.2f%%”, 2/7f) 0.29% |
无需记住查表即可
二.从键盘输入
使用 Scanner 读取字符串/整数/浮点数
具体写法如下
三.练习 输入姓名输出姓名 输入年龄 输出年龄
研究nextLine和next的区别,以及出现的问题和解决办法
问题点1(nextLine的缺陷):我们可以发现,相同代码,除红框处不同,nextLine(),nextLine在nextInt后面失去其作用效果。如下对比图。
1.next时–可以达到预期结果
2.nextLine不可以达到预期结果:
因为:nextLine在nextInt后面失去其作用效果
解决办法:把nextLine放在nextInt前即可。
即先写输入姓名,在写输入年龄
更改后如下图
问题点二(next的缺陷):nextLine和next的区别出现在输出姓名(字符串)时,nextLine可以输出带空格的名字,而next只能读取到空格前的字符,空格后的字符被丢弃
nextLine输出名字的情况如上图所示-可以得到预期结果
next输出名字的情况如下图–如果输出的字符串中含有空格,则不可以达到预期结果
正确可运行代码
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//int a=10;类似于:类型 变量名称 初始值
//System.in代表从键盘获取初始值
System.out.print("请输入你的姓名:");
String name=scan.nextLine();
System.out.println("姓名:"+name);
System.out.print("请输入一个整数:");
int age=scan.nextInt();//代码执行到该行时,要求你输入一个整数
System.out.println("年龄:"+age);
}
总结
1.next最大的问题是:读字符串,只能读到空格前面的部分
2.nextLine最大的问题就是只能读一行,单独使用没有任何问题,和其他不同类型的数据同时使用的时候,要把字符串放在最上面处理,即可达到预期效果。
3.当我们输入一些不同类型的数据的时候,把字符串放到最上面的部分,即优先处理字符串的部分。
遗忘点
输入如何写
1.导入包,定义变量名称-scan(自定义)
Scanner scan = new Scanner(System.in);
2.类型+变量名
String name=scan.nextLine();
int age=scan.nextInt();