Loop Infinito ao tratar entrada de dado

o método está dando loop infinito, não sei porque!

private int LerDadoInteger(int n){
	
	boolean flag = true;

	while(flag){

		System.out.println("digite o valor");

		try{

			n = inputN.nextInt();
			flag = false;
		}catch(InputMismatchException c){

			flag = true;
			
		}
	}

	return n;

Coloque uma mensagem de retorno na captura do erro, provavelmente ele está sempre entrando no catch

private int LerDadoInteger(int n){

	boolean flag = true;

	while(flag){

		System.out.println("digite o valor");

		try{

			n = inputN.nextInt();
			flag = false;
		}catch(InputMismatchException c){

			System.out.println("digite um Número");
			
		}

assim? mas o problema é porque ele não pedi o número novamente para eu digitar, ele fica no loop assim :

digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor
digite um Número
digite o valor

Era uma mensagem apenas para retornar o erro.

Então em nenhum momento você digitou um valor ou apenas uma vez e ai ele não sai do loop?

O que vc está digitando exatamente?
Recomendo criar um novo inputN, deve estar com buffer.
inputN = new Scanner...

Não está caindo no try, coloque um if no lugar para testar.

ele não sai do loop não, era para voltar no começo do while e pedi novamente o valor

quero validar o dado, exemplo : se eu digitar uma string ou char ele captura no try/catch e pedi para digitar novamente o dado

Vc não precisa da flag. Pode fazer while(true) e colocar return n; depois da leitura.

mas como irei captura a exception sem try/ cacth?

excelente ideia, irei tentar aki! valew !

Pois então vai ficar em loop até digitar algo correto. Por isso pedi oq estava digitando de valor. Teste com um valor VÁLIDO pra ver se sai do loop. Pois a lógica está certa (se não for problema de buffer), deve sair do loop quando digitar um int válido.

Isso é o buffer mesmo! pq primeiro eu digite errado(String) ae fica no buffer pq irei ler uma int depois!

Cria um novo Scanner então. Sempre recomendo isso. Pq se vc lê String fica em buffer.

private int LerDadoInteger(int n){

	boolean flag = true;

	while(flag){

		System.out.println("digite o valor");

		try{

			n = new Scanner(System.in).nextInt();
			return n;
		}catch(InputMismatchException c){

			System.out.println("digite um Número");
			
			}
		}
	return 0;

consegui resolver assim galera! Valew ae! Era Buffer mesmo!

while(true){

	System.out.println("digite o valor");

	try{

		n = new Scanner(System.in).nextInt();
		return n;
	}catch(InputMismatchException c){

		System.out.println("digite um Número válido!\n");
		
		}
	}
return 0;

Fica melhor assim.

valew Cara!