1.基本用法
//创建Scanner对象,使用其中一个构造方法
Scanner sc = new Scanner(System.in);//键盘录入
int i = sc.nextInt();//键盘录入一个整数存储在i中
System.out.println(i);
//这里只能录入一个整数,如果输入的是其它的,会报错
/*
* java.util.InputMismatchException:这个错误,我们可以直接复制java.util后面的Input类
* 在API中去搜索,结果是:
* 由 Scanner抛出,表示 Scanner到的令牌与预期类型的模式不匹配,或令牌超出预期类型的范围。
**/
2.hasNextInt() :判断录入的是否为Int型(hasNextXXX就是判断这个录入类型的)
//如果我们就想只能输入Int值,就需要调用另一个方法
//这个方法会判断用户录入的是否超出了Int的范围
Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()){
//我们在保存这个录入之前,就判断这个录入是否是整数
int i = sc.nextInt();
System.out.println(i);
}else{
System.out.println("您输入的类型有误");
}
3.输入多个整数和多个字符串
//输入多个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int i = sc.nextInt();
System.out.println("请输入第二个整数:");
int j = sc.nextInt();
int sum = i + j;
System.out.println("i+j=" + sum);
// public String nextLine():就是将录入的所有东西都以字符串保存
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str1 = sc.nextLine();
System.out.println("请输入第二个字符串:");
String str2 = sc.nextLine();
System.out.println("str1="+str1+"//str2="+str2);
4.同时录入字符串和整数会出现的问题
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int i = sc.nextInt();
System.out.println("请输入第二个字符串:");
String str2 = sc.nextLine();
System.out.println("str1=" +i+ ", str2="+str2);
//按上面的代码写下来,我们在执行到"请输入第二个字符串"就会跳过str2 = sc.nextLine()方法
//直接执行下面的打印方法
/*
* 分析问题原因:
* nextInt()是键盘录入整数的方法,当我们录入10的时候,
* 其实在键盘上录入的是10和\r\n,(\r\n:就是我们输入完10后,输入的回车符)
*nextInt()方法只获取10就结束了
* nextLine()方法是获取字符串的方法,可以接受任意类型
* 但是其通过\r\n来结束一行录入,遇到\r\n就证明你的输入结束
*所以上面我们输入了10和\r\n,所以nextLine()遇到了,就直接结束了
* */
#解决办法很简单—可以将所有的输入都用nextLine(),到时再转换类型就好了