Há alturas em que é importante receber a entrada dos utilizadores para a execução de programas. Para o fazer precisa de Métodos de Entrada da Consola de Leitura Java.
Métodos de Entrada da Consola de Leitura Java
- Utilizar Classe de Leitor Buffered
- Utilizar Classe de Scanner
- Utilizar Classe de Consola de Leitura
Agora vamos dar uma vista de olhos a estes métodos um por um.
Usando a Classe de Leitor Tampão
Esta é a técnica mais antiga em Java utilizada para a entrada de consola de leitura. Esta técnica foi introduzida pela primeira vez em JDK 1.0. Usando esta técnica precisamos de envolver o InputStreamReader e System.na classe BufferedReader.
Isto é feito usando a seguinte sintaxe:
BufferedReader br = novo BufferedReader (novo InputStreamReader (Sistema.in));
Utilizando isto ligará o fluxo baseado em caracteres ‘br’ à consola para entrada através do System.in.
NOTE: enquanto se utiliza o BufferedReader é necessário lançar uma IOException, caso contrário será mostrada uma mensagem de erro no momento da compilação.
BufferedReader Class is defined in java.io class so for using BufferedReader Class you need to import java.io first.io.
Deixe-nos ver um exemplo para tornar o conceito mais claro.
Neste exemplo, vamos obter uma cadeia de caracteres introduzidos pelo utilizador. O programa mostrará os caracteres um a um ao utilizador no ecrã. Continuará até o carácter de terminação ser encontrado na cadeia de caracteres.
// Program to read a string using BufferedReader class.import java.io.*;class bread{ public static void main(String args) throws IOException { char ch; BufferedReader br = new BufferedReader(new InputStreamReader (System.in)); System.out.println ("Enter any string of your choice (To terminate Press \'z\' "); do { ch = (char) br.read (); System.out.println (ch); } while (ch != 'z'); }}
Output 1
Here, quando z é encontrado na cadeia de caracteres, o programa deixará de exibir quaisquer outros caracteres introduzidos pelo utilizador.
Saída 2
Utilizando a Classe Scanner
A classe Scanner foi introduzida em JDK 1.5 e tem sido amplamente utilizada. A classe Scanner fornece vários métodos para facilitar a forma como obtemos a entrada da consola. A classe Scanner é definida em java.util pelo que é necessário importar este primeiro.
O Scanner também usa System.in e a sua sintaxe é a seguinte:
Scanner obj_name = novo Scanner (Sistema.in);
alguns dos métodos utilitários que a classe Scanner fornece são os seguintes:
hasNext() | Devolve um valor booleano dependendo da disponibilidade ou não de qualquer ficha. Retorna um valor verdadeiro se algum token estiver disponível. Caso contrário, retorna um valor falso. |
hasNextInt() | Retorna um valor verdadeiro se um valor int estiver a ser lido. Caso contrário, retorna um valor falso. |
hasNextFloat() | Retorna um verdadeiro se um valor de flutuação estiver a ser lido. Caso contrário, retorna um valor falso. |
hasNextBoolean() | Retorna um verdadeiro se um valor booleano estiver a ser lido. Caso contrário, retorna um valor falso. |
next() | Lê o próximo símbolo como uma String. |
nextLine() | Lê a próxima linha de entrada como uma String. |
nextInt() | Linha de entrada seguinte como um número inteiro. |
nextDouble() | Lê o próximo valor de entrada como um valor duplo. |
Deixe-nos ver um exemplo para compreender melhor o conceito. Neste exemplo vamos ler números de um utilizador e vamos encontrar a soma destes números e mostrar-lhe o resultado.
// Program to calculate the sum of n numbers using Scanner classimport java.util.*;class scanner_eg{ public static void main(String args) { Scanner obj = new Scanner (System.in); double total = 0; System.out.println ("Enter numbers to add. Enter any string to end list."); while (obj.hasNext()) { if (obj.hasNextDouble()) { total += obj.nextDouble(); } else { break; } } System.out.println ("Sum of the numbers is " + total); }}
Output
NOTE: – Sempre que utilizarmos o método seguinte, em tempo de execução ele procurará sempre a entrada que define. Se tal entrada não estiver disponível, então lançará uma excepção. Assim, é sempre benéfico verificar a entrada antes de utilizar o método hasNext antes de chamar o método seguinte.
Usar a Classe Console
Esta é outra forma de ler a entrada do utilizador a partir da consola em Java. Esta forma de ler a entrada do utilizador foi introduzida em JDK 1.6. Esta técnica também usa System.in para ler a entrada.
Esta técnica é mais adequada para a leitura da entrada que não requer eco da entrada do utilizador como a leitura de palavras-passe de utilizador. Esta técnica lê as entradas do utilizador sem fazer eco dos caracteres introduzidos pelo utilizador.
A classe Console é definida na classe java.io que precisa de ser importada antes de utilizar a classe console.
Deixe-nos considerar um exemplo.
import java.io.*;class consoleEg{ public static void main(String args) { String name; System.out.println ("Enter your name: "); Console c = System.console(); name = c.readLine(); System.out.println ("Your name is: " + name); }}
Output
NOTE: – A única desvantagem desta técnica é que funciona em ambientes interactivos e não funciona em IDE.
Em Java podemos ler a entrada da consola de três maneiras, isto é, utilizando a classe BufferedReader, classe Scanner, e classe Console em Java. Dependendo da forma como se pretende ler a entrada do utilizador, pode implementá-la nos seus programas.