Vivek
Vivek

Reputation: 49

NoSuchElement using scanner

I have declared two strings and reading the input using Scanner(System.in).

After this when i am closing the Scanner and again reading the another input using the Scanner,then it throws an error: NoSuchElementException. Please guide me on this

import java.util.Scanner;
import java.io.*;  

public class NumericInput

{
  public static void main(String[] args)
  {
    // Declarations
    Scanner in = new Scanner(System.in);
    String string1;
    String string2;

   // Prompts 
    System.out.println("Enter the value of the First String .");
   // Read in values  
    string1 = in.nextLine();
    // When i am commenting below line(in.close) code is working properly. 
    in.close();
    Scanner sc = new Scanner(System.in);
    System.out.println("Now enter another value.");
    string2 = sc.next();
    sc.close();

    System.out.println("Here is what you entered: ");
    System.out.println(string1 + " and " + string2);
  }

}

Upvotes: 3

Views: 91

Answers (2)

Sharp Edge
Sharp Edge

Reputation: 4192

There is no need to close a Scanner, since it implements AutoCloseable interface you should declare resources in try-with-resources as of java 7. If closing Scanner is an issue.

try(Scanner in = new Scanner(System.in); Scanner sc = new Scanner(System.in)){
 // do stuff here without closing
}

 catch(Exception){
  e.printStackTrace();
 }

Upvotes: 0

Maroun
Maroun

Reputation: 95948

When you close your scanner it also closes System.in input stream, you are using it again, but it's closed, so when you try to use Scanner again, no open System.in stream is found.

Upvotes: 4

Related Questions