java.util.Scanner hasNext(Pattern pattern)
Description :
This java tutorial shows how to use the hasNext(Pattern pattern) method of Scanner class of java.util package. This method returns a boolean data type which corresponds if there is an available token given a object specified as method argument.
Method Syntax :
public boolean hasNext(Pattern pattern)
Parameter Input :
DataType | Parameter | Description |
---|---|---|
Pattern | pattern | An object pattern that Scanner object used in tokenizing |
Method Returns :
This method simply returns boolean which corresponds the result of pattern matching. Returns true if the Scanner has token that matches the object Pattern specified as method argument, otherwise it’s false.
Compatibility Version :
Requires Java 1.5 and up
Exception :
IllegalStateException
The IllegalStateException will be thrown by hasNext(Pattern pattern) method of Scanner class if the method invocation is done after the scanner is closed.
Discussion :
The Scanner hasNext(Pattern pattern) method is used a flag if we can iterate further on the String tokens. This is a long version of calling the method hasNext(String pattern). Looking at the java api source code, this is the same method as the latter. However the only difference is that instead of String pattern, the method argument is Pattern object.
Java Code Example :
This java example source code demonstrates the use of hasNext(Pattern pattern) method of Scanner class. Basically the code prints only those tokens that consists of alphabet on its character elements.
package com.teknoscope.java.tutorial.scanner; import java.util.Scanner; import java.util.regex.Pattern; /* * This is a java example source code that shows the * usage of hasNext(Patten pattern) * method of Scanner class. This code scans only tokens that consists * of characters on the alphabet only * Java Tutorial */ public class ScannerHasNextPatternDemo { public static void main(String[] args) { // Initialize Scanner object Scanner scan = new Scanner("Vince1;Gandhi;Albert"); // declare the delimiter to be used by Scanner object scan.useDelimiter(";"); /*Initialize the String pattern which signifies that the String token contains characters of the alphabet only*/ Pattern pattern = Pattern.compile("[A-Za-z]*"); while(scan.hasNext()){ // check if the token consists of declared pattern if(scan.hasNext(pattern)){ System.out.println(scan.next()); } else scan.next(); } // closing the scanner stream scan.close(); } }
Sample Output :
Running the hasNext(Patttern pattern) method example source code of Scanner class will give you the following output
Exception Scenario :
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *[A-Za-z]* ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at com.teknoscope.java.tutorial.scanner.ScannerHasNextPatternDemo.main(ScannerHasNextPatternDemo.java:26) Exception in thread "main" java.lang.IllegalStateException: Scanner closed at java.util.Scanner.ensureOpen(Unknown Source) at java.util.Scanner.hasNext(Unknown Source) at com.teknoscope.java.tutorial.scanner.ScannerHasNextPatternDemo.main(ScannerHasNextPatternDemo.java:40)
Similar Method :
- N/A
Suggested Reading List :
References :