Java Scanner类

Java中的Scanner类位于java.util包中。Java提供了多种从键盘读取输入的方式,而java.util.Scanner类就是其中之一。

Java的Scanner类使用默认的空格作为分隔符将输入拆分为标记。它提供了许多方法来读取和解析各种基本类型的值。

Java的Scanner类广泛用于使用正则表达式解析文本字符串和基本类型。这是在Java中获取输入的最简单方法。通过使用Java中的Scanner,我们可以以int、long、double、byte、float、short等基本类型从用户那里获取输入。 Java的Scanner类继承自Object类并实现了Iterator和Closeable接口。

Java的Scanner类提供了nextXXX()方法来返回特定类型的值,例如nextInt()、nextByte()、nextShort()、next()、nextLine()、nextDouble()、nextFloat()、nextBoolean()等。要从扫描器中获取单个字符,可以调用next().charAt(0)方法,它返回一个单个字符。

Java Scanner类的声明如下

public final class Scanner
    extends Object
    implements Iterator<String>

如何获取Java Scanner

要获取从用户那里读取输入的Java Scanner实例,我们需要在Scanner类的构造函数中传递输入流(System.in)。例如:

Scanner in = new Scanner(System.in);

要获取解析字符串的Java Scanner实例,我们需要在Scanner类的构造函数中传递字符串。例如:

Scanner in = new Scanner("Hello Javatpoint");

Java Scanner类的构造函数如下:

序号构造函数描述
1Scanner(File source)构造一个从指定文件读取值的新Scanner。
2Scanner(File source, String charsetName)构造一个从指定文件读取值的新Scanner。
3Scanner(InputStream source)构造一个从指定输入流读取值的新Scanner。
4Scanner(InputStream source, String charsetName)构造一个从指定输入流读取值的新Scanner。
5Scanner(Readable source)构造一个从指定源读取值的新Scanner。
6Scanner(String source)构造一个从指定字符串读取值的新Scanner。
7Scanner(ReadableByteChannel source)构造一个从指定通道读取值的新Scanner。
8Scanner(ReadableByteChannel source, String charsetName)构造一个从指定通道读取值的新Scanner。
9Scanner(Path source)构造一个从指定文件读取值的新Scanner。
10Scanner(Path source, String charsetName)构造一个从指定文件读取值的新Scanner。

示例1

让我们看一个简单的Java Scanner示例,我们从用户那里获取单个输入。在这里,我们通过in.nextLine()方法询问一个字符串。

import java.util.*;  
public class ScannerExample {  
public static void main(String args[]){  
          Scanner in = new Scanner(System.in);  
          System.out.print("Enter your name: ");  
          String name = in.nextLine();  
          System.out.println("Name is: " + name);             
          in.close();             
          }  
}  

输出:

Enter your name: sonoo jaiswal
Name is: sonoo jaiswal

示例2

import java.util.*;  
public class ScannerClassExample1 {    
      public static void main(String args[]){                       
          String s = "Hello, This is JavaTpoint.";  
          //Create scanner Object and pass string in it  
          Scanner scan = new Scanner(s);  
          //Check if the scanner has a token  
          System.out.println("Boolean Result: " + scan.hasNext());  
          //Print the string  
          System.out.println("String: " +scan.nextLine());  
          scan.close();           
          System.out.println("--------Enter Your Details-------- ");  
          Scanner in = new Scanner(System.in);  
          System.out.print("Enter your name: ");    
          String name = in.next();   
          System.out.println("Name: " + name);           
          System.out.print("Enter your age: ");  
          int i = in.nextInt();  
          System.out.println("Age: " + i);  
          System.out.print("Enter your salary: ");  
          double d = in.nextDouble();  
          System.out.println("Salary: " + d);         
          in.close();           
          }    
}  

输出:

Boolean Result: true
String: Hello, This is JavaTpoint.
-------Enter Your Details--------- 
Enter your name: Abhishek
Name: Abhishek
Enter your age: 23
Age: 23
Enter your salary: 25000
Salary: 25000.0

示例3

import java.util.*;  
public class ScannerClassExample2 {    
      public static void main(String args[]){                       
          String str = "Hello/This is JavaTpoint/My name is Abhishek.";  
          //Create scanner with the specified String Object  
          Scanner scanner = new Scanner(str);  
          System.out.println("Boolean Result: "+scanner.hasNextBoolean());            
          //Change the delimiter of this scanner  
          scanner.useDelimiter("/");  
          //Printing the tokenized Strings  
          System.out.println("---Tokenizes String---");   
        while(scanner.hasNext()){  
            System.out.println(scanner.next());  
        }  
          //Display the new delimiter  
          System.out.println("Delimiter used: " +scanner.delimiter());            
          scanner.close();  
          }    
}  

输出:

Boolean Result: false
---Tokenizes String---
Hello
This is JavaTpoint
My name is Abhishek.
Delimiter used: /

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想