java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入,我喜欢叫它扫描仪。
下面是创建 Scanner 对象的基本语法:
Scanner scanner = new Scanner(System.in); //基本使用块 //········· //一般使用I/O流类,一定要记得结束对它的使用 scanner.close();基本的使用 next()方法:
/** * next()方法: * 一定要接受有效字符 * 对空白之前的字符会自动将其去掉 * 以空白或Enter为结束 */ //创建一个扫描对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); //判断用户有没有输入字符串 if (scanner.hasNext()){ //使用next方式接收 String str = scanner.next(); System.out.println("输出的内容为:"+str); } //关闭scanner scanner.close();测试结果: 显然输入和输出不一样,next()方法中是以空格和Enter为结束符,在空格以后的他都不会再接收存在str中。
nextLine()方法:
/** * nextLine()方法: * 以Enter为结束符 * 可以接收空白 */ Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方法接收:"); if (scanner.hasNext()){ String str = scanner.nextLine(); System.out.println("输出的内容:"+str); } scanner.close();测试结果: 使用nextLine()可以接收一整行的字符串,以Enter接收,等于就是相当于可以接收一整行的数据。
next()和nextLine()返回的都是String类型
下面为接收其他类型的类型的方法: boolean nextBoolean() byte nextByte() double nextDouble() float nextFloat() int nextInt() long nextLong(int radix) short nextShort()
以nextFloat()和nextInt()为例子:
Scanner scanner = new Scanner(System.in); int i = 0; float f = 0.0f; System.out.println("请输入整数:"); if (scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据:"+i); } else{ System.out.println("输入的不是整数数据!"); } System.out.println("请输入小数:"); if (scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据:"+f); } else{ System.out.println("输入的不是小数数据!"); } scanner.close();测试结果: 上诉测试是在第一次输入的不是整数的情况下,代码中的第一个if不通过,但是第二个if可以通过,两次扫描第一个扫描不接收,但是第二个扫描可以接收。