浅析Java Scanner 类的用法

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

下面是创建 Scanner 对象的基本语法:

Scanner s = new Scanner(System.in);

接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

使用 next 方法:

import java.util.Scanner; 

public class ScannerDemo {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    // 从键盘接收数据

    // next方式接收字符串
    System.out.println("next方式接收:");
    // 判断是否还有输入
    if (scan.hasNext()) {
      String str1 = scan.next();
      System.out.println("输入的数据为:" + str1);
    }
    scan.close();
  }
}

执行以上程序输出结果为:

$ javac ScannerDemo.java
$ java ScannerDemo

next方式接收:
runoob com
输入的数据为:runoob

可以看到 com 字符串并未输出,接下来我们看 nextLine。

使用 nextLine 方法:

ScannerDemo.java 文件代码:

import java.util.Scanner;

public class ScannerDemo {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    // 从键盘接收数据

    // nextLine方式接收字符串
    System.out.println("nextLine方式接收:");
    // 判断是否还有输入
    if (scan.hasNextLine()) {
      String str2 = scan.nextLine();
      System.out.println("输入的数据为:" + str2);
    }
    scan.close();
  }
}

可以看到 com 字符串输出。

next() 与 nextLine() 区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白。

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

import java.util.Scanner;

public class ScannerDemo {
  public static void main(String[] args) {
    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.print("输入小数:");
    if (scan.hasNextFloat()) {
      // 判断输入的是否是小数
      f = scan.nextFloat();
      // 接收小数
      System.out.println("小数数据:" + f);
    } else {
      // 输入错误的信息
      System.out.println("输入的不是小数!");
    }
    scan.close();
  }
}

执行以上程序输出结果为:

$ javac ScannerDemo.java
$ java ScannerDemo
输入整数:12
整数数据:12
输入小数:1.2
小数数据:1.2

以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

import java.util.Scanner;

class ScannerDemo {
  public static void main(String[] args) {
    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));
    scan.close();
  }
}

执行以上程序输出结果为:

$ javac ScannerDemo.java
$ java ScannerDemo
12
23
15
21.4
end
4个数的和为71.4
4个数的平均值是17.85

以上就是浅析Java Scanner 类的用法的详细内容,更多关于Java Scanner 类的资料请关注我们其它相关文章!

(0)

相关推荐

  • 在java中用Scanner类读入单个字符的方法

    Scanner没有直接读入单个字符的方法,next方法没办法读入空格符,因为Scanner以空格符作为输入完毕的标志 import java.util.Scanner; Scanner in = new Scanner(System.in); String s = in.nextLine(); char[] chars = s.toArray(); char c = chars[0]; //c就是读入的单个字符 以上这篇在java中用Scanner类读入单个字符的方法就是小编分享给大家的全部内容

  • Java使用Scanner类获取用户输入实例详解

    创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); Scanner 类的 next() 方法 import java.util.Scanner; class Test{ public static void main(String[] args){ String s; Scanner userInput = new Scanner(System.in); System.out.print("Input String: ");

  • java中Scanner类的简单用法分享

    复制代码 代码如下: public static void main(String[] args) {     System.out.println("请输入值,以回车结束:");     Scanner sc = new Scanner(System.in);     sc.useDelimiter("\n");     while (sc.hasNext()) {         String s = sc.next();         System.out.

  • Java Scanner类用法及nextLine()产生的换行符问题实例分析

    本文实例讲述了Java Scanner类用法及nextLine()产生的换行符问题.分享给大家供大家参考,具体如下: 分析理解:Scanner sc = new Scanner(System.in); package cn.itcast_01; /* * Scanner:用于接收键盘录入数据. * * 前面的时候: * A:导包 * B:创建对象 * C:调用方法 * * 分析理解:Scanner sc = new Scanner(System.in); * System类下有一个静态的字段:

  • Java Scanner 类的使用小结

    在笔试编程过程中,关于数据的读取如果迷迷糊糊,那后来的编程即使想法很对,实现很好,也是徒劳,于是在这里认真总结了Java Scanner 类的使用 通过 Scanner 类来获取用户的输入,下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); // 从键盘接收数据 接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext

  • Java Scanner类及其方法使用图解

    1.导包 java.util:import java.util.Scanner; 2.创建对象 Scanner x=new Scanner(System.in); 3.做事情 int value=x.nextInt(); String value=x.nextLine(); nextInt(nextFloat nextByte) next nextLine 1.读取方式上来讲 大家都以回车符作为结束符号: 除了nextLine以外其余的方法都不读取回车符: 2.读取的返回结果来讲:nextInt

  • java编程scanner类用法示例

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分.于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法.这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析.借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器.

  • Java中Scanner类与BufferReader类的不同点(非常详细)

    java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串.它本质上是使用正则表达式去读取不同的数据类型. Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本. 下面是两个类的不同之处: 当nextLine()被用在nextXXX()之后,用Scanner类有什么问题 尝试去猜测下面代码的输出内容: // Code using Scanner Class import java.util.Scanner; c

  • Java使用Scanner类进行控制台输入实现方法

    在Java中,不像Python一样直接用个input()就行的.Java控制台输入比较麻烦,下面是比较易懂的教程. 首先,新建一个调用Java的Scanner(扫描仪)的类,新建main方法. import java.util.Scanner; public class scanner { public static void main(String[] args) { } } 在main方法中新建一个Scanner的对象实例. Scanner enter = new Scanner(Syste

  • 浅析Java Scanner 类的用法

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); 接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据: 使用 next 方法: import ja

  • 浅析java 的 static 关键字用法

    本篇浅析java中static的用法,主要五个方面:静态成员变量,静态方法,静态块,静态内部类,静态导包. 首先还是一张表格说一下静态对象和非静态对象的区别: 静态对象 非静态对象 归属 类共同具有 类的各个实例独立拥有 内存分配 内存空间上固定的 附属类分配 分配空间顺序 优先分配静态对象空间 优先分配静态对象空间,初始化也一样 1 静态变量,静态方法,静态块 静态对象,静态方法都是在原对象和方法上加上static关键字修饰,表示类可以直接调用这些,而不需要实例化后再调用.具有的好处是: 1-

  • 浅析java中stringBuilder的用法

    String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建 Strin

  • Java String类简单用法实战示例【字符串输出、比较】

    本文实例讲述了Java String类简单用法.分享给大家供大家参考,具体如下: 一 String类的实例化方式 1 代码 public class NewString { public static void main(String args[]) { String str1= "Hello World!"; // 直接赋值建立对象str1 System.out.println("str1:" + str1) ; //输出 String str2 = new St

  • Java Scanner类的使用示例

    1 Scanner的使用 JDK给我们提供了成千上万个类供我们直接使用,而Scanner就是这众多类里的一个最常用的一个类,既然它是一个类,我们使用它的方法和使用我们自己写的类的方法基本一致. 方法基本如下: 1.导包:就是指出需要使用的类在哪一个位置,格式一般为import 包名称.类名称,Scanner导包语句便为import java.util.Scanner对于和当前类属于同一个包的时候,导包语句可以不写,JDK里提供的类仅仅只有java.lang下的类不需要导包. 2.创建:按照格式创

  • java Wrapper类基本用法详解

    在封装中有一种特殊的类,能够把基本的数据类型进行转换来方便实际的使用.我们在之前提到的一些数据类型,最明显的特征是所有字母为小写状态,那么经过Wrapper的包装后,首字母就变成了大写.下面我们就这种特殊的封装类Wrapper的概念.转换图解.模式以及实例带来分享. 1.概念 wrapper类是在Java中创建对象引用类型的原始类型的方式.我们可以说,通过提供wrapper类,使Java在面向对象技术的本质上摆脱了困境,即使是原类型没有被保存. 2.转换图解 该类主要用于基本数据类型和字符串之间

  • java Scanner类的使用示例代码

    Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序.它是以前的StringTokenizer和Matcher类之间的某种结合.由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分.于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法.这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析.借助于Scanner,可以针对任何要处理的

  • 浅析java中static的用法

    static的作用: 1.将对象层级提升为类层级 (即将对象可以调用的,提升为对象和类均可调用的成员):            //推荐使用类来调用   ClassNme.静态成员 (包括变量.方法.成员对象) 2.static修饰的成员,在类加载时即准备完成,而不需要创建对象:   //类加载只做一次: 类名 的时候会类加载; new 对象时会类加载 3.静态成员方法只能访问静态成员,不能访问非静态成员(因为调用该方法时可能还没有创建对象):    而非静态成员方法既能访问非静态成员,又能访问

随机推荐