一、Scanner 类
Scanner是一个扫描器,获取数据的过程是去内存中的一块缓冲区进行扫描和数据读入,我们在控制台中输入的数据也是被先存入缓冲区中等待扫描器的扫描读取。这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格、回车都是空白符。
1.1 next()与nextLine()区别
next:
- 一定要读取到有效字符后才可以结束输出
- 对输入有效字符之前遇到的空白,next方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分割符或结束符
- next方法不能得到带有空格的字符串
nextLIne:
- 以Enter为结束符,也就是说nextLine方法返回的是输入回车之前的所有字符
- 可以获得空白
1.2 nextInt()与nextLine()
nextInt()方法在扫描到空白符的时候会将前面的数据读取走,但会丢下空白符“\r”在缓冲区中。对于nextLine()方法来说,空白符会被读取清理掉,不会继续保存在缓冲区中。
以如下的代码为例:
public class test{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int num=input.nextInt();
String s=input.nextLine();
System.out.println("number is:"+num);
System.out.println("String is:"+s);
}
}
输入:
2
输出:
number is:2
String is:
以上的过程就是nextInt()读取走了一个int数据但是把换行符留在了缓冲区中,结果nextLine()读取到了这个换行符。
二、输出格式
2.1 保留小数点后X位
以保留到小数点后两位为例,d为需要保留的数值,格式后的结果为f表示浮点型
String result = String .format("%.2f",d);