目录
2.1.旧:直接使用System.in.read可以读入一个字符,但是需要搭配异常处理。
2.2.新:使用JDK提供的Scanner类下的不同方法来读取字符串/整数/浮点数以及循环读取N个数字
PS:从键盘读入一个字符串有两种方式:next()与nextLine(),它们异同如下:
1.输出到控制台
System.out.println(msg); // 输出一个字符串,带换行
System.out.println("Hello Java"); // 输出后换行
System.out.print(msg); // 输出一个字符串,不换行,加\n换行
System.out.print("Hello World"); // 输出不换行
System.out.print("Hello World\n"); // 与println效果相同
System.out.printf(format,msg); // 格式化输出,输出方式与C语言基本相同,不换行
System.out.printf("%d",15); // 格式化输出,不换行
System.out.printf("%d\n",15); // 换行
格式化字符串(常用占位符):(无须记忆,即用即查)
转换符 | 类型 | 使用方法 | 输出结果 |
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) | 0×1.9p6 |
s | 字符串 | ("%s", 100) | 100 |
c | 字符 | ("%c", '1') | 1 |
b | 布尔值 | ("%b", 100) | true |
h | 散列码 | ("%h", 100) | 64 |
% | 百分号 | ("%.2f%%", 2/7f) | 0.29% |
2.从键盘输入
2.1.旧:直接使用System.in.read可以读入一个字符,但是需要搭配异常处理。
read返回一个int类型的值,在Java中所有小于4字节的会变为int,所以要进行强转。
计算机内部字符和int可互换。(ASCII码)
错误:
System.out.print("Enter a Char:");
char i = (char) System.in.read();
System.out.println("your char is :" + i);
// 编译出错
Test.java:4: 错误: 未报告的异常错误IOException; 必须对其进行捕获或声明以便抛出
正确:
import java.io.IOException; //需要导入IOException包
try{
System.out.print("Enter a Char:");
char i = (char) System.in.read();
System.out.println("your char is :" + i);
}catch(IOException e){
System.out.println("exception");
}
这种方法很麻烦,不推荐使用。
2.2.新:使用JDK提供的Scanner类下的不同方法来读取字符串/整数/浮点数以及循环读取N个数字
import java.util.Scanner; //需要导入util包引入Scanner类
Scanner scanner = new Scanner(System.in); //声明一个输入类的对象(对象名称scanner可以自己设定)
//数据类型 变量名称 = scanner.next数据类型( );
String str1 = scanner.next(); //从键盘读入一个字符串
String str2 = scanner.nextLine(); //从键盘读入一个字符串
int num1 = scanner.nextInt(); //从键盘读入一个整数
float num2 = scanner.nextFloat(); //从键盘读入一个单精度浮点数
double num3 = scanner.nextDouble(); //从键盘读入一个双精度浮点数
//用scanner.hasNext数据类型 判断是否还有输入的数据
while (scanner.hasNextDouble()) {
double num4 = scanner.nextDouble();
}
sc.close(); //注意, 要记得调用关闭方法
PS:从键盘读入一个字符串有两种方式:next()与nextLine(),它们异同如下:
同:
next() 和 nextLine() 读取的结果都是 String 类型,返回 String 类型。
异:
(简单点说,next我只要字,nextLine我啥都要)
next()
- next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉。
- 只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符。
- 所以next()方法不能得到带空格的字符串。
nextLine()
- nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键。
- 即nextLine()方法返回的是Enter键之前所有带空格的字符串。