java.util.NoSuchElementException – How to solve NoSuchElementException
In this tutorial, we will discuss about the java.util.nosuchelementexception in Java. This exception is thrown to indicate that there are no more elements in an enumeration.
This exception extends the RuntimeException
class and thus belongs to those exceptions that can be thrown during the operation of the Java Virtual Machine (JVM). It is an unchecked exception and thus, it does not need to be declared in a method’s or a constructor’s throws clause.
Finally, the java.util.nosuchelementexception existed since the first version of Java.
1. The Structure of NoSuchElementException
Constructors
NoSuchElementException()
Creates an instance of the NoSuchElementException
class, setting null
as its message.
NoSuchElementException(String s)
Creates an instance of the NoSuchElementException
class, using the specified string as message. The string argument indicates the name of the class that threw the error.
2. The java.util.nosuchelementexception Exception in Java
The NoSuchElementException
can be thrown by the following methods:
All the aforementioned methods try to return the next element of an enumeration and throw that exception, in order to indicate that no more elements exist. A sample example that throws a java.util.nosuchelementexception is the following:
import java.util.HashSet; import java.util.Hashtable; import java.util.Set; import java.util.StringTokenizer; public class NoSuchElementExceptionExample { public static void main(String[] args) { Set sampleSet = new HashSet(); Hashtable sampleTable = new Hashtable(); StringTokenizer tokenizer = new StringTokenizer("", ":,"); /* All following statements throw a NoSuchElementException. */ sampleSet.iterator().next(); sampleTable.elements().nextElement(); tokenizer.nextToken(); } }
A sample execution is shown below:
Exception in thread "main" java.util.NoSuchElementException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1431) at java.util.HashMap$KeyIterator.next(HashMap.java:1453) at main.java.NoSuchElementExceptionExample.main(NoSuchElementExceptionExample.java:15)
3. How to deal with the java.util.nosuchelementexception
A very common error case is when a Java application tries to iterate over an empty Set
. In order to avoid this error, a Java application should call the hasNext
first. For example:
import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class MapIterationExample { private final static int TOTAL_ELEMENTS = 100; public static void main(String[] args) { Set sampleSet = new HashSet(TOTAL_ELEMENTS); Iterator ite = sampleSet.iterator(); while(ite.hasNext()) System.out.println(ite.next()); } }
Accordingly, if a Java application uses enumerations, the hasMoreElements
method shall be used:
import java.util.Enumeration; import java.util.Hashtable; public class EnumerationIterationExample { private final static int TOTAL_ELEMENTS = 100; public static void main(String[] args) { Hashtable sampleTable= new Hashtable(TOTAL_ELEMENTS); Enumeration tableEnum = sampleTable.elements(); while(tableEnum.hasMoreElements()) System.out.println(tableEnum.nextElement()); } }
Finally, a proper user of the StringTokenizer
is the following:
import java.util.StringTokenizer; public class StringTokenizerExample { public static void main(String[] args) { String str = "Hello:from:Java,Code:Geeks"; StringTokenizer tokenizer = new StringTokenizer(str, ":,"); while(tokenizer.hasMoreTokens()) System.out.println(tokenizer.nextToken()); } }
4. Download the Eclipse Project
This was a tutorial about the NoSuchElementException
in Java.
You can download the full source code of this example here: java.util.NoSuchElementException – How to solve NoSuchElementException
Last updated on Dec. 09th, 2021
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t>0)
{
int n = sc.nextInt();
int[] arr = new int[n];
int count = 0;
for(int i = 0 ; i<n;i++)
{
arr[i] = sc.nextInt();
}
for( i = 0 ; i<n-1 ; i++)
{
for(int j = i+1 ; j<n ; j++)
{
if(arr[i] < arr[j])
{
count = 1;
}
}
if(count == 0)
{
System.out.print(arr[i] + " ");
}
}
}
}
}
it shows no such element exception
getting error
Exception in thread “main” java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Codechef.main(Main.java:15)
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be “Main” only if the class is public. */
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int s[] = new int[N];
for(int j=0; j<N; j++){
s[j] = sc.nextInt();
}
sc.close();
int temp = 0;
for(int i=0; i<s.length-1; i++){
if(s[i]<s[i+1]){
temp = temp+((s[i+1]-s[i])-1);
}else{
temp = temp+((s[i]-s[i+1])-1);
}
}System.out.println(temp);
}
}