java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。创建Scanner对象的基本语法:

  Scanner s = new Scanner(System.in);

在读取前,一遍需要hasNext和hasNextLine判断是否还有输入的数据。它们的区别为:

next():

  1.一定要读取到有效字符后才可以结束输入。

  2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉。

  3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。

  4.next()不能得到带有空格的字符串。

nextLine():

  1.以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。

  2.可以获得空白。

package cuiyuee;
import java.util.Scanner; public class ScannerTest { public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
/*
System.out.println("next方式接收:");
if(scan.hasNext()){
String str = scan.next();
System.out.println("输入的数据为:"+str);
}
*/
System.out.println("hasNext方式接收:");
if(scan.hasNextLine()){
String str1 = scan.nextLine();
System.out.println("输入的数据为:"+str1);
}
} }

nextLine()返回结果:

hasNext方式接收:
hi spring
输入的数据为:hi spring

next()返回结果:

next方式接收:
hi spring
输入的数据为:hi

#################################

如果要输入int或float类型的数据,在Scanner类中也有支持,但是在输入之前最好先使用hasNextXxx()方法进行验证,再使用nextXxx()来读取。

package cuiyuee;
import java.util.Scanner; public class ScannerTestIntFloat { public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.print("输入整数:");
if(scan.hasNextInt()){
i = scan.nextInt();
System.out.println("整数数据:"+ i);
}else{
System.out.println("输入的不是整数!");
}
System.out.println("输入小数:");
if(scan.hasNextFloat()){
f = scan.nextFloat();
System.out.println("小数数据:"+f);
}else{
System.out.println("输入的不是小数!");
}
} }
package cuiyuee;
import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in); double sum = 0;
int m = 0; while(scan.hasNextDouble()){
double x = scan.nextDouble();
m = m+1;
sum = sum + x;
}
System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的平均值是:"+(sum/m));
} }

输出为:

1.2
2
3.456
235
end
4个数的和为:241.656
4个数的平均值是:60.414

Java中的Scanner类的更多相关文章

  1. Java中使用Scanner类进行键盘的输入详解

    我们在使用Java写代码时,经常会遇到从键盘输入字符串等操作,这时候我们需要用到的是我们的Scanner类来实现获取用户从键盘上的输入操作. Scanner类是一个基于正则表达式的文本扫描器,它可以从 ...

  2. Java中的Scanner类和String类

    1:Scanner的使用(了解)    (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西.            它其实是标准的输入流,对应于键 ...

  3. Java基础之Scanner类中next()与nextLine()方法的区别

    java中使用Scanner类实现数据输入十分简单方便,Scanner类中next()与nextLine()都可以实现字符串String的获取,所以我们会纠结二者之间的区别. 其实next()与nex ...

  4. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  5. Java Character & String & Scanner类

    Character类 Character 类用于对单个字符进行操作. Character 类在对象中包装一个基本类型 char 的值 char用法: char ch = 'a'; // Unicode ...

  6. Java常用API(Scanner类)

    Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...

  7. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  8. java中的File类

    File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真 ...

  9. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

随机推荐

  1. 来一波Linux中查看cpu、磁盘、内存、网络的命令

    转载请注明出处. 如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM 查看硬件的温度/风扇转速,电脑有撸大师,服务器就有ipmitool.使用ipmitool实 ...

  2. flush table with read lock的轻量级解决方案

    为什么要使用FTWRL   MySQL dba在日常工作中,数据备份绝对是工作频度最高的工作内容之一.当你使用逻辑方式进行备份(mydumper,mysqldump)或物理方式进行备份(percona ...

  3. javascrip 实现简单的计算器功能

    页面样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  4. sql:sql server,MySQL,PostgreSQL的表,视图,存储过程结构查询

    sql server 2005: --SQL SERVER 2005 生成代码需要知道的SQL语句 use LibrarySystem --查询当前数据库所有表和其的主键字段,字段类型,长度,是否为空 ...

  5. 关于html 中form表单的内标签和使用

    表单标记 1.普通文本框: <input type=”text” name=”名称” value=”值”;不写value默认为空/> 2.密码框:<input type=”passw ...

  6. BZOJ3625: 小朋友和二叉树

    传送门 Sol 设 \(f_x\) 表示权值为 \(x\) 的二叉树的个数 设 \(s_x\) 表示是否有 \(x\) 这种权值可以选择 那么 \[f_n=\sum_{i=0}^{n}\sum_{j= ...

  7. Bzoj3277:串

    题面 传送门 Sol 广义\(sam\) 每个\(sam\)的状态开\(set\)记录属于哪些串 \(parent\)树上启发式合并\(set\) 然后每个串就在上面走,通过不停地跳\(parent\ ...

  8. UOJ#55 [WC2014]紫荆花之恋

    题目描述 强强和萌萌是一对好朋友.有一天他们在外面闲逛,突然看到前方有一棵紫荆树.这已经是紫荆花飞舞的季节了,无数的花瓣以肉眼可见的速度从紫荆树上长了出来. 仔细看看的话,这个大树实际上是一个带权树. ...

  9. Java类中的各种成员的加载顺序

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  10. Web开发须知的浏览器内幕 缓存与存储篇(1)

    本文禁止转载,由UC浏览器内部出品. 0.前言 大纲 浏览器缓存和存储相关的功能分为四类: 加载流程 Memory Cache Application Cache(简称AppCache) HTTP C ...