目录
疫情当前,大家要做好防护哦。
带好口罩了嘛?
今天的知识点较为简单,但是坑爹!
我们一起来看看吧~
输出到控制台
💬 基本语法
System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出
⚫ println 输出的内容自带 \n, print 不带 \n
⚫ printf 的格式化输出方式和 C 语言的 printf 是基本一致的
📝 代码示例
public class cs { public static void main(String[] args) { System.out.println("Nick"); int x = 520; System.out.printf("x = %d\n",x); } } // Nick // x = 520
💬 格式化字符串
转换符
类型
举例
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",100)
true
h
散列码
("%h",100)
64
%
百分号
("%.2f%%",2/7f)
0.29%
🔴 这个表格没必要记住, 用到的时候根据需要查一下就行了
从键盘输入(坑爹呀)
💬 读入一个字符 (选学)
🔵 直接使用 System.in.read 可以读入一个字符. 但是需要搭配异常处理(后面会重点讲到)
System.out.print("Enter a Char:"); char i = (char) System.in.read(); System.out.println("your char is :"+i); // 编译出错 Test.java:4: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出 char i = (char) System.in.read();
✔ 正确写法
import java.io.IOException; // 需要导入 IOException 包 public class cs { public static void main(String[] args) throws IOException { System.out.print("Enter a Char:"); char i = (char) System.in.read(); System.out.println("your char is :" + i); } }
🔵 这种方式比较麻烦, 我们不推荐使用。
💬 使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包 public class cs { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入你的姓名:"); String name = sc.nextLine(); System.out.println("请输入你的年龄:"); int age = sc.nextInt(); System.out.println("请输入你体重:"); float heavy = sc.nextFloat(); System.out.println("你的信息如下:"); System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"体重:"+heavy+"kg"); sc.close(); // 注意, 要记得调用关闭方法 } }
💬 使用 Scanner 循环读取 N 个数字
Scanner sc = new Scanner(System.in); double sum = 0.0; int num = 0; while (sc.hasNextDouble()) { double tmp = sc.nextDouble(); sum += tmp; num++; } System.out.println("sum = " + sum); System.out.println("avg = " + sum / num); sc.close(); // 执行结果 10 40.0 50.5 ^Z sum = 150.5 avg = 30.1
🔻注意事项 ctrl + z
💠 当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl + d)
🔻 注意事项(大坑1)
import java.util.Scanner; // 需要导入 util 包 public class cs { public static void main(String[] args) { Scanner src = new Scanner(System.in); int b = src.nextInt(); String a = src.nextLine(); System.out.println(a); System.out.println(b); } }
![]()
💠 我们发现读完数字后直接输出了,你可以理解为String是回车,因此一般性我们先读取字符串,在读取其他类型。
import java.util.Scanner; // 需要导入 util 包 public class cs { public static void main(String[] args) { Scanner src = new Scanner(System.in); String a = src.nextLine(); int b = src.nextInt(); System.out.println(a); System.out.println(b); } }
🔻 注意事项(大坑2)
public class cs { public static void main(String[] args) { Scanner src = new Scanner(System.in); String a =src.next(); int b = src.nextInt(); if(b%==0){ System.out.println("123"); } } }
💠 我们发现输入不匹配异常,二个输入语句没有执行,为什么呢?next遇到空格即结束,因此要用nextLine,读取一整行。我们来看正确代码。
public class cs { public static void main(String[] args) { Scanner src = new Scanner(System.in); String a =src.nextLine(); int b = src.nextInt(); if(b%==0){ System.out.println("123"); } } }
总结
🔴 java里面坑爹的输入机制还有很多很多,Nick只列举了几个,这是 java内部机制的不足,深究原因要考虑很多了,这里我就不探讨了,因此一般性我们做大型复杂项目千万不要写这种东西,你要参数直接传就行了,非必要不去写,况且解决方法也很多。