1、先声明一个Scanner类型的变量,并赋值一个对象
Scanner:是一个文本扫描仪类型,它的全名称是java.util.Scanner,它是核心类库中定义好的,可以直接用
Scanner是一个类,不是基本数据类型,是引用数据类型,所以必须给它赋值一个“对象”。
2、从控制台接收用户数的一个xx数据,并且赋值给合适的变量
int 变量 = input.nextInt(); input是Scanner类型的变量,上面叫什么名,下面就用什么名
double 变量 = input.nextDouble();
long 变量 = input.nextLong();
boolean 变量 = input.nextBoolean();
String 变量 = input.next();
char 变量 = input.next().charAt(0);
如果要接收数据的变量的数据类型和用户输入的数据的数据类型不符合,会报 InputMisMatchException输入不匹配错误
3、关闭IO流
//先导包
import java.util.Scanner;
public static void main(String[] args) {
//全名称使用法
//java.util.Scanner input = new java.util.Scanner(System.in);
Scanner input = new Scanner(System.in);
//这句代码唯一可以改的是input,它是一个变量名
System.out.print("请输入一个整数:");//先执行,先显示这句话
int num = input.nextInt();//接收键盘输入, 它们有顺序要求
System.out.println("num = " + num);
System.out.print("请输入一个小数:");
double d = input.nextDouble();
System.out.println("d = " + d);
System.out.print("请输入一个布尔值:");
boolean b = input.nextBoolean();
System.out.println("b = " + b);
System.out.print("请输入一个大整数");
long big = input.nextLong();
System.out.println("big = " + big);
System.out.print("请输入一个字符串");
String str = input.next();
System.out.println("str = " + str);
System.out.print("请输入单个字符:");
char c = input.next().charAt(0);
/*
input.next():接收一个字符串,很多个字符
input.next().charAt(0):表示从多个字符中取1个字符,取第1个
charAt(0):表示取一个字符串的第1个
charAt(1):表示取一个字符串的第2个
charAt(2):表示取一个字符串的第3个
...
如果输入的字符串的个数少于你要获取的位置,就报错StringIndexOutOfBoundsException字符串下标越界
*/
System.out.println("c = " + c);
input.close();//建议大家记得它,代码没有错误,但是会造成JVM以外的操作系统相关内存没有得到是否
}
键盘输入:
next()与nextLine()的区别?
next()方法在读取用户输入的数据时,遇到空格或者其他的空白时,就会认为本次输入结束,后面的数据就不接收了。
nextLine()方法在读取用户输入的数据时,遇到回车换行符号才会认为输入结束
只要遇到回车换行符,就认为输入结束。
结论:
(1)如果字符串中不需要包含空格,那么请用next()更简单
(2)如果字符串中需要包含空格,那么在nextLine()前面如果有其他的非nextLine()的输入语句,请在前面加一句 xx.nextLine()解决
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年龄:");
int age = input.nextInt();
System.out.println("age = " + age);
/*
nextInt()不会读取回车换行符,只会读取数字,例如23,后面的回车换行符还在通道中
如果紧接着下面是nextLine()方法,那么会读取到这个 回车换行符,就结束了
int age = input.nextInt();
String name = input.nextLine();
请输入年龄:23
age = 23
请输入姓名:name =
*/
input.nextLine();//把23后面的回车换行符读取掉
System.out.print("请输入姓名:");
//String name = input.next();
String name = input.nextLine();
/*
next():
张三:正常接收“张三”
张 三:只能接收“张”
nextLine():
张三:正常接收“张三”
张 三:正常接收“张 三”
*/
System.out.println("name = " + name);
input.close();
}