HackerRank #6 | Scanner e End-of-file | 🇧🇷
Tags: scanner, java, hackerrank, endoffile
Published: 2021-08-24 16:17:32

#Scanner

Um Scanner serve para ler um input. A sintaxe é:


<code>
Scanner sc = new Scanner (System.in);
	/...
	sc.close();						
</code>

É importante fechar o Scanner antes de fechar o main.

=============

#Java End-of-file

No caso [desse exercício](https://www.hackerrank.com/challenges/java-end-of-file/problem) que pede para ler linha a linha (sem delimitação prévia de quantas linhas totais), adicionando o número de cada linha antes do input (o input é uma String), achei a seguinte solução:

* Criar um new Scanner
* Criar um integer i que inicia em 1
* Criar um while que passa um Scanner com o método .hasNext()
* Imprimir o input com System.out.println(i + " " + sc.nextLine());
	
> ^ o .nextLine serve para o programa esperar uma linha para continuar a rodar. Sem o .nextLine(), o programa roda eternamente depois do primeiro input.

* Somar +1 ao integer para voltar ao início do loop.
* Fechar o Scanner.

O código final fica assim, dentro da main:

<code>
Scanner sc = new Scanner(System.in);
int i = 1;
while(sc.hasNext()){
     System.out.println(i + " " + sc);
     i++;
}
sc.close();
</code>


============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

- HackerRank #6 | Scanner e End-of-file
- [HackerRank #7 | Int to String / String to Int](https://dev.to/beatrizmaciel/hackerrank-7-int-em-string-e-vice-versa-4n1e)
- [HackerRank #8 | Date and Time](https://dev.to/beatrizmaciel/hackerrank-8-date-and-time-1f78)
- [HackerRank #9 | Static Initializer Block](https://dev.to/beatrizmaciel/hackerrank-9-static-initializer-block-48ha)
- [HackerRank #10 | Currency Formatter](https://dev.to/beatrizmaciel/hackerrank-10-currency-formatter-22oj)
- [HackerRank #11 | DataTypes](https://dev.to/beatrizmaciel/hackerrank-11-datatypes-2e9h)
- [HackerRank #12 | Strings Introduction](https://dev.to/beatrizmaciel/hackerrank-12-strings-introduction-2d1n)
- [HackerRank #13 | Substring Comparisons](https://dev.to/beatrizmaciel/hackerrank-13-substring-comparisons-57ha)
- [HackerRank #14 | Abstract Class](https://dev.to/beatrizmaciel/hackerrank-14-abstract-class-3h5d)
- [HackerRank #18 | BigInteger](https://dev.to/beatrizmaciel/hackerrank-18-biginteger-4jad)
- [HackerRank #19 | Loops II](https://dev.to/beatrizmaciel/hackerrank-19-loops-ii-385n)
- [HackerRank #20 | String Reverse](https://dev.to/beatrizmaciel/hackerrank-20-string-reverse-nec)
- [HackerRank #23 | Instanceof keyword](https://dev.to/beatrizmaciel/hackerrank-23-instanceof-keyword-3lh6)
- [HackerRank #26 | Generics](https://dev.to/beatrizmaciel/hackerrank-26-generics-55p8)
- [HackerRank #27 | 1D Array](https://dev.to/beatrizmaciel/hackerrank-27-1d-array-5f80)
- [HackerRank #28 | Anagrams](https://dev.to/beatrizmaciel/hackerrank-28-anagrams-boi)
- [HackerRank #33 | Arraylist](https://dev.to/beatrizmaciel/hackerrank-33-arraylist-2lj1)
- [HackerRank #34 | Exception Handling Try / Catch](https://dev.to/beatrizmaciel/hackerrank-34-exception-handling-try-catch-144f)
- [HackerRank #36 | Exception Handling](https://dev.to/beatrizmaciel/hackerrank-35-exception-handling-44e)
- [HackerRank #37 | List](https://dev.to/beatrizmaciel/hackerrank-37-list-4gmj)
- [HackerRank #38 | SubArray](https://dev.to/beatrizmaciel/hackerrank-38-subarray-1693)
- [HackerRank #39 | HashSet](https://dev.to/beatrizmaciel/hackerrank-39-hashset-3jb3)
- [HackerRank #40 | Java Dequeue](https://dev.to/beatrizmaciel/hackerrank-40-java-dequeue--497h)