Erro no scanner

Olá, bom dia!
Estou tentando executar esse código no eclipse, mas está dando erro na linha " (4) Scanner scanner = new Scanner(System.in); "
Aparece o símbolo da lâmpada com sinal de atenção amarelo, escrito "Resource leak: ‘scanner’ is never closed.

import java.util.Scanner;

public class Vetor {

public static void main(String[] args) {

   Scanner scanner = new Scanner(System.in);
   
   int N = scanner.nextInt();

   if (N > 0) {

       int[] vetor = new int[N];

       for (int i = 0; i < N; i++) {

           vetor[i] = scanner.nextInt();

       }

       System.out.println();

       System.out.println(maiorDiferenca(vetor));

       System.out.println(ordemCrescente(vetor));

   }

}

public static int maiorDiferenca(int vetor[]) {

   int maior, segundoMaior;

   maior = vetor[0];

   segundoMaior = maior;

   for (int i = 1; i < vetor.length; i++) {

       if (vetor[i] > maior) {

           segundoMaior = maior;

           maior = vetor[i];

       } else if (vetor[i] > segundoMaior && vetor[i] != maior) {

           segundoMaior = vetor[i];

       }

   }

   if (maior == segundoMaior) {

       return 0;

   }

   return maior - segundoMaior;

}

public static boolean ordemCrescente(int vetor[]) {

   for (int i = 1; i < vetor.length; i++) {

       if (vetor[i] < vetor[i - 1]) {

           return false;

       }

   }

   return true;

}

}

Esse símbolo de lâmpada não é um erro, mas sim um warning, ou seja, seu código irá rodar sem erros de compilação.

O motivo desse warning é que o Scanner é um tipo de classe que precisa ser fechado após o uso para poder liberar os recursos que foram abertos.

Vc pode fazer isso de 2 formar:

chamando o método close

scanner.close();

usando try-with-resouces (java8+)

// o try irá fechar automaticamente após a execução
try (Scanner scanner = new Scanner(System.in)) {
    // código que usa o scanner aqui
}

Opa beleza mano?
Então eu consegui resolver aqui esse problema, estava dando uma pesquisada e achei a solução…
Agora estou com um problema aqui pra colocar a mensagem pro usuário digitar a quantidade de vetores que ele quer criar…
Aonde eu consigo declarar essa opção no código ?
Sou novo em Java…

Não se deve chamar o método close quando o Scanner encapsula o System.in.
Declare o seu Scanner como uma variável estática da classe Vetor.
O System.in também é estático e seu Scanner lê o System.in.

1 curtida