Scanner retornando erro

Estou escrevendo o código abaixo:

    public int findNet(String InputRede) {
	try {
		for (GetNetwork network : getRedes()) {
			if (network.getId().equals(InputRede)) {
				return getRedes().indexOf(network);
			}
		}
	} catch (NullPointerException exc) {
		System.out.println("Erro! a interface não é wireless! por favor escolher outra!");
	}
	return -1;
}

public void SelRede() {
	Scanner scanner2 = new Scanner(System.in);
	System.out.println("Digite a ID da rede");
	idNum = findNet(scanner2.nextLine());
	while (idNum == -1) {
		System.out.println("ID de rede não encontrada! digite novamente!");
		idNum = findNet(scanner2.nextLine());
	}
	System.out.println("Digite a senha da rede (deixe em branco caso não haja)");
	senha = scanner2.nextLine();
	scanner2.close();
}

Entretanto, ele tem me retornado o seguinte erro:

Exception in thread “main” java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at classes.control.SelectNetwork.SelRede(SelectNetwork.java:28)

A linha 28 é esta:

idNum = findNet(scanner2.nextLine());

Resumidamente, o que está acontecendo é que o código não está executando a scanner, não permitindo ao usuário inserir o texto na variável, retornando o exception NoSuchElementException.

Minha pergunta enão é a seguinte:

Porque o código não está executando executando a scanner?

no momento não consigo enxergar a solução, por isso recorri a vocês, nobres colegas.
Agradeço desde já.

Antes de invocar o scanner2.nextLine(), você deveria conferir o scanner2.hasNextLine().
Me chamou a atenção que você chamou sua variável de scanner2, algum motivo especial pra isso?
Se você criou um Scanner para ler o System.in, deveria sempre reaproveitar o mesmo objeto e não criar outros.