用Scanner读取字符串、整数、浮点数。
例如
用Scanner对用户的姓名、年龄和工资进行输入输出。
import java.util.Scanner;//需要导入util包
public class Teat {
public static void main(String[] args) {
//输入输出
Scanner scanner=new Scanner(System.in);//Scanner是资源,用完要关闭
System.out.println("请输入你的姓名:");
String name=scanner.nextLine();
System.out.println("name:"+name);
System.out.println("请输入你的年龄:");
int age=scanner.nextInt();
System.out.println("age:"+age);
System.out.println("请输入你的工资:");
float f=scanner.nextFloat();
System.out.println(f);
scanner.close();//关闭Scanner
}
输出
同样对于名为li ming的用户进行统计时,也是可以输入输出的
输出结果为
(1)若将nextLine()改为next(),
会出现什么情况,如图
如上图所示,发现输入用户名为"li ming"时,输出只有“li”,而年龄直接报错了,错误类型为
表明输入参数的类型是不匹配的,这是由于next()在读取数据的时候读到空格就结束了,认为空格后面的数据“ming”是要被下面的年龄读取的,但是年龄不能读取字符串,所以产生了报错。
所以next()遇到空格结束。
但是根据前面可以知道nextLine()是可以直接输出“li ming”的,是因为nextLine()是可以解析一行数据的,故而可以直接将用户名输出。
所以在输入输出时要注意将信息都匹配上才可以。
(2)对于姓名、年龄的输入顺序,若调换会出现什么情况呢
若输入程序为
import java.util.Scanner;//需要导入util包
public class Teat {
public static void main(String[] args) {
//输入输出
Scanner scanner=new Scanner(System.in);//Scanner是资源,用完要关闭
System.out.println("请输入你的年龄:");
int age=scanner.nextInt();
System.out.println("age:"+age);
System.out.println("请输入你的姓名:");
String name=scanner.nextLine();
System.out.println("name:"+name);
System.out.println("请输入你的工资:");
float f=scanner.nextFloat();
System.out.println(f);
scanner.close();//关闭Scanner
}
先读整数,再读字符串时,结果为
说明当nextInt()在nextLine()上面时,输入年龄回车时,回车也就是“\n”,说明nextLine()将“\n”读入了。
若将nextLine()换成next()时,发现是可以读入的
但是next()不能输入空格
综上,尽量不要在nextLine()上面使用nextInt()