Scanner next() throwing NoSuchElementException for some online compilers

This exception gets thrown because there are no more elements in the enumeration.

See the documentation:

Thrown by the nextElement method of an Enumeration to indicate that
there are no more elements in the enumeration.


Some online IDEs don’t allow user input at all, in which case the exception will get thrown as soon as you try to read user input.

  1. It works on TutorialsPoint IDE because it allows user input.
  2. It doesn’t works on codechef and compilejava IDEs because these IDEs does not support user input.

However there’s secondary way to add user input on codechef. Just tick mark on Custom Input checkbox and provide any input. It will then compile.


Another reason for this exception, i.e. there simply not being more user input, can be handled by, before calling s.next(), just checking s.hasNext() to see whether the scanner has another token.

  Scanner s = new Scanner(System.in);
  System.out.print("Enter name: ");
  String name = null;
  if(s.hasNext())
      name = s.next();
  System.out.println("Name is " + name);

Leave a Comment