如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
注意:
需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException
导致程序终止。
1 //1.导包 2 import java.util.Scanner; 3 4 class ScannerTest{ 5 6 public static void main(String[] args){ 7 //2.Scanner的实例化 8 Scanner scan = new Scanner(System.in); 9 10 //3.调用Scanner类的相关方法 11 System.out.println("请输入你的姓名:"); 12 String name = scan.next(); 13 System.out.println(name); 14 15 System.out.println("请输入你的芳龄:"); 16 int age = scan.nextInt(); 17 System.out.println(age); 18 19 System.out.println("请输入你的体重:"); 20 double weight = scan.nextDouble(); 21 System.out.println(weight); 22 23 System.out.println("你是否相中我了呢?(true/false)"); 24 boolean isLove = scan.nextBoolean(); 25 System.out.println(isLove); 26 27 //对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串 28 System.out.println("请输入你的性别:(男/女)"); 29 String gender = scan.next();//"男" 30 char genderChar = gender.charAt(0);//获取索引为0位置上的字符 31 System.out.println(genderChar); 32 } 33 }
尚硅谷的案例
版权声明:本文为CSDN博主「规则固态长方体物质空间移动工程师」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40164190/article/details/81917208
Scanner类简介
Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。
由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。
于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。
这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。
借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
Scanner类的常用方法1
其实上图的意思就是,比如:nextlnt():只读取int值,就是只能读取整数类型的数据,如果输入了非整型的数据(浮点型字符串等)就会报错。
nextFloat()、nextDouble()这些也是以此类推,只能读取符合该类型的数据。
此处重点讲一下next()和nextLine()的区别
next():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)
nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行。
代码演示:
1 public class Text { 2 public static void main(String []args) { 3 Scanner input = new Scanner(System.in); 4 System.out.println("请输入一个字符串(中间能加空格或符号)"); 5 String a = input.nextLine(); 6 System.out.println("请输入一个字符串(中间不能加空格或符号)"); 7 String b = input.next(); 8 System.out.println("请输入一个整数"); 9 int c; 10 c = input.nextInt(); 11 System.out.println("请输入一个double类型的小数"); 12 double d = input.nextDouble(); 13 System.out.println("请输入一个float类型的小数"); 14 float f = input.nextFloat(); 15 System.out.println("按顺序输出abcdf的值:"); 16 System.out.println(a); 17 System.out.println(b); 18 System.out.println(c); 19 System.out.println(d); 20 System.out.println(f); 21 } 22 }
运行结果:
1 请输入一个字符串(中间能加空格或符号) 2 我爱祖国! 3 请输入一个字符串(中间不能加空格或符号) 4 ILoveChina 5 请输入一个整数 6 520 7 请输入一个double类型的小数 8 12.26e3 9 请输入一个float类型的小数 10 3.1415926 11 按顺序输出abcdf的值: 12 我爱祖国! 13 ILoveChina 14 520 15 12260.0 16 3.1415925
Scanner类的常用方法2
代码演示:
1 public class inputInformation { 2 public static void main(String args[]) { 3 Scanner scan = new Scanner(System.in); //构造Scanner类的对象scan,接收从控制台输入的信息 4 System.out.println("请输入你的姓名"); 5 String name = scan.nextLine();//接收一个字符串,可以加除Enter以外的所有符号,包括空格和Tab 6 System.out.println("请输入你的ID"); 7 String ID ; 8 while(scan.hasNextLine()) {// hasNextLine()方法判断当前是否有输入,当键盘有输入后执行循环 9 if(scan.hasNextInt()) {// 判断输入的值是否为整数类型,当为整数类型时执行循环 10 ID = scan.nextLine(); 11 System.out.println("你输入的姓名为:"+name); 12 System.out.println("你输入的ID为:"+ID); 13 break; 14 }else { 15 System.out.println("请输入数字哦!"); 16 ID = scan.nextLine(); 17 continue; 18 } 19 } 20 } 21 }
运行结果如下:
1 请输入你的姓名 2 西地那非 3 请输入你的ID 4 q764323221 5 请输入数字哦! 6 764323221