Java Scanner 类

在本教程中,我们将借助示例学习Java Scanner及其方法。

java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。

java.util包的Scanner类用于从不同的源(例如输入流,用户,文件等)读取输入数据。让我们举个实例。

示例1:使用扫描器读取一行文本

importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建一个对象ScannerScannerinput=newScanner(System.in);System.out.print("输入姓名:");//从键盘接收输入Stringname=input.nextLine();//打印输出姓名System.out.println("我的名字是"+name);//Closesthescannerinput.close();}}

输出结果

输入姓名:Jack我的名字是Jack

在上面的示例中,请注意以下行

Scannerinput=newScanner(System.in);

在这里,我们创建了一个名为input的Scanner对象。

System.in参数用于从标准输入中获取输入。 就像从键盘上获取输入一样。

然后,我们使用Scanner类的nextLine()方法从用户那里读取一行文本。

现在您对Scanner有了一些了解,让我们对其进行更多的探索。

导入扫描器类

从上面的示例可以看到,我们需要先导入java.util.Scanner包,然后才能使用Scanner类。

importjava.util.Scanner;

用Java创建扫描程序对象

如上所述,导入包后,就可以创建Scanner对象。

//从输入流中读取输入Scannersc1=newScanner(InputStreaminput);//从文件读取输入Scannersc2=newScanner(Filefile);//从字符串中读取输入Scannersc3=newScanner(Stringstr);

在这里,我们创建了Scanner类的对象,这些对象将分别从InputStream,文件和字符串读取输入。

Java扫描器输入方法

Scanner类提供各种方法,使我们能够读出不同类型的输入。

方法描述
nextInt()从用户读取int值
nextFloat()从用户读取float值
nextBoolean()从用户读取boolean值
nextLine()从用户读取一行文本
next()从用户那里读取一个单词
nextByte()从用户读取byte值
nextDouble()从用户读取double值
nextShort()从用户读取short值
nextLong()从用户读取long值

示例2:Java扫描器 nextInt()

importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建扫描器对象Scannerinput=newScanner(System.in);System.out.println("输入一个整数:");//读取一个int值intdata1=input.nextInt();System.out.println("使用nextInt():"+data1);input.close();}}

输出结果

输入一个整数:22使用nextInt():22

在上面的示例中,我们使用了nextInt()方法来读取整数值。

示例3:Java 扫描器 nextDouble()方法

importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建一个Scanner对象Scannerinput=newScanner(System.in);System.out.print("输入双精度值:");//读取双精度值doublevalue=input.nextDouble();System.out.println("使用nextDouble():"+value);input.close();}}

输出结果

输入双精度值:33.33使用nextDouble():33.33

在上面的示例中,我们使用了nextDouble()方法来读取浮点值。

示例4:Java扫描器 next() 方法
importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建一个Scanner对象Scannerinput=newScanner(System.in);System.out.print("Enteryourname:");//读取整个单词Stringvalue=input.next();System.out.println("Usingnext():"+value);input.close();}}

输出结果

Enteryourname:JonnyWalkerUsingnext():Jonny

在上面的示例中,我们使用next()方法从用户读取字符串。

在这里,我们提供了全名。 但是,next()方法仅读取名字。

这是因为next()方法将输入读取到空格字符。一旦遇到空格,它就返回字符串(不包括空格)。

示例5:Java扫描器nextLine()方法

importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建一个Scanner对象Scannerinput=newScanner(System.in);System.out.print("Enteryourname:");//读取整行Stringvalue=input.nextLine();System.out.println("UsingnextLine():"+value);input.close();}}

输出结果

Enteryourname:JonnyWalkerUsingnextLine():JonnyWalker

在第一个示例中,我们使用了nextLine()方法从用户读取字符串。

与next()不同,nextLine()方法读取包括空格在内的整个输入行。当该方法遇到下一行字符\n时终止。

Java扫描器 BigInteger 和 BigDecimal

Java扫描程序还可以用于读取大整数和大十进制数。

  • nextBigInteger() - 从用户读取大整数值

  • nextBigDecimal() - 从用户读取大十进制值

示例4:读取BigInteger和BigDecimal

importjava.math.BigDecimal;importjava.math.BigInteger;importjava.util.Scanner;classMain{publicstaticvoidmain(String[]args){//创建一个Scanner对象Scannerinput=newScanner(System.in);System.out.print("输入一个大整数:");//读取大整数BigIntegervalue1=input.nextBigInteger();System.out.println("UsingnextBigInteger():"+value1);System.out.print("输入一个大十进制:");//读取大十进制BigDecimalvalue2=input.nextBigDecimal();System.out.println("UsingnextBigDecimal():"+value2);input.close();}}

输出结果

输入一个大整数:987654321使用nextBigInteger():987654321输入一个大十进制:9.55555使用nextBigDecimal():9.55555

在上面的示例中,我们使用java.math.BigInteger和java.math.BigDecimal包分别读取BigInteger和BigDecimal。

Java扫描器的工作方式

扫描器类读取整个行,并将该行划分为记号。令牌是对Java编译器有一定意义的小元素。例如

假设有一个输入字符串:

Heis22

在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:“ He ”,“ is ”和“ 22 ”。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。

注意:默认情况下,空格用于划分标记。

编辑于2024-05-20 11:57