Aprenda a utilizar o Scanner
Aprenda neste artigo como utilizar o Scanner. Uma nova classe, adicionada ao J2SE 5.0.
Estatísticas:










votos: 12
Serviços:

Aprenda a utilizar o Scanner
J2SE 5.0 adiciona classes e métodos que podem facilitar a execução de algumas tarefas. Nesta dica você verá como a classe java.util.Scanner recentemente adicionado faz a leitura e a análise gramatical em strings e tipos primitivos utilizando expressões regulares.
Antes da liberação do J2SE 5.0, você escreveu código provavelmente como a classe TextReader para ler textos de um arquivo:
|
|
A aproximação básica em classes assim é criar um objeto de Arquivo que corresponde ao arquivo atual no disco rígido. A classe cria um FileReader associado com o arquivo e depois um BufferedReader do FileReader. Logo após usa o leitor de BufferedFile para ler o arquivo uma linha por vez.
Para ver a classe TextReader funcioando, você precisa criar um documento para a classe ler e analisar gramaticalmente. Crie o documento, salve o seguinte texto em um arquivo de nome TextSample.txt no mesmo diretório do TextReader:
usará para testar o java.util.scanner.
Compile a classe TextReader, e em seguida execute com a seguinte entrada:
java TextReader TextSample.txt
A saída é idêntica à forma como o texto está organizado no arquivo original.
Você pode simplificar o código da classe TextReader usando java.util.Scanner. Esta é uma classe que analisa gramaticalmente tipos primitivos e strings:
|
|
Compile o TextScanner, e depois rode com a seguinte entrada:
java TextScanner TextSample.txt
Você deve conseguir a seguinte saída
é
um
pequeno
arquivo
de
texto
que
você
usará
para
testar
o
java.util.scanner.
TextScanner cria um objeto Scanner do arquivo. O Scanner quebra os símbolos do arquivo que usam um padrão como delimitador (neste caso, o espaço “ ”), por definição, o delimitador padrão é o espaço
Você pode mudar o delimitador que é usado para um token pelo método useDelimiter da classe Scanner. Você pode passar o delimitador
|
|
Note que há outras opções para descobrir o fim de uma linha. Por exemplo, você poderia testar para linhas que terminam com um caráter de nova linha ou aquele fim com um retorno de carruagem e um caráter de nova linha. Você pode fazer isso usando a expressão regular "\ r\n |\n." O JavaDocs para java.util.regex.Pattern mostra outro possível delimitador de linha, assim uma verificação mais completa usaria a expressão "\ r\n|[\r\n\u2028\u2029\u0085]." Você também pode usar o método hasNextLine() e o método nextLine() da classe Scanner. Você deveria ver o seguinte:
usará para testar o java.util.scanner.
Uma mudança simples no delimitador usado pelo Scanner lhe dá muito poder e flexibilidade. Por exemplo, se você especificar o delimitador da seguinte forma:
lê imediatamente o arquivo inteiro. Isto é semelhante ao truque sugerido por Pat Niemeyer em seu blog de java.net. Você pode ler o conteúdo de uma única vez sem criar vários objetos de intermediário. O código para a classe seguinte, WebPageScanner, lê todo o conteúdo do site java.net:
|
|
Você pode controlar mais que Strings com a classe Scanner. Você também pode usar Scanner para analisar gramaticalmente dados primitivos. Para ilustrar isto, salve os seguintes dados em um arquivo de nome Employee.data (no mesmo diretório de sua aplicação):
Kay, 27, verdade
Lou, 33, falso
Você poderia tratar isto como um Strting grande e poderia executar as conversões depois de analisar gramaticalmente a String. Ao invés disso, você pode analisar gramaticalmente este arquivo em dois passos. Isto é ilustrado na classe seguinte, DataScanner:
|
|
O objeto de Scanner lê um arquivo, uma linha de cada vez. O método readFile() passa cada linha a um segundo Scanner. O segundo Scanner analisa gramaticalmente a vírgula delimitando dados e descarta os espaços em branco em qualquer lado da vírgula. Há variantes do método hasNext() e do método next() que permitem testar se o próximo símbolo é ou não um tipo especificado e tentar tratar o próximo símbolo como um exemplo daquele tipo. Por exemplo, nextBoolean() tenta tratar o próximo símbolo como um boolean e tenta combinar "verdadeiro" ou "falso" na String. Se a combinação não pode ser feita, a excessão java.util.InputMismatchException é lançado. O método parseLine() da classe DataScanner mostra como cada linha é analisada gramaticalmente
Compile a classe DataScanner, e depois execute da seguinte forma:
Você deve ver a seguinte saída:
É verdade que Joe, tem 38.
É verdade que Kay, tem 27 anos.
É falso que Lou, tem 33 anos.




Artigo Engenharia de Software 6 - Utilizando Visualização de Informação para Compreensão de Software

Desmistificando o AJAX – Parte VI

Desmistificando o AJAX – Parte V

Desmistificando o AJAX – Parte IV

Desmistificando o AJAX – Parte III

Desmistificando o AJAX – Parte II

Desmistificando o AJAX – Parte I

Desenvolvendo sistemas em PalmOS utilizando POO

JRuby – Java, Ruby, Eclipse e RDT – Parte V

JRuby – Java, Ruby, Eclipse e RDT – Parte IV



Curso Online - Introdução ao AJAX Reverso

(tutorial) Aprenda a persistir dados em suas aplicações Java utilizando Hibernate

Desenvolvendo uma aplicação completa utilizando Swing

Introdução ao JDBC

Java Web: Saiba como Desenvolver Aplicações utilizando Spring, Hibernate e JSF na Prática

OLAP com o SQL Server

Introdução à Engenharia de Requisitos

Curso OnLine WebDesign - Desenvolvendo o layout de um WebSite passo a passo




[vídeo] Array no ViewData: Curso ASP.NET MVC 2.0 com Visual Studio 2010 - Parte 14

Mineração de Repositórios de Software: A Computação ajudando à Computação.

Boas-vindas

Boas-vindas

Mineração de Repositórios de Software: A Computação ajudando à Computação.

[vídeo] Teste Automatizado: Codificação do UserTest - Curso JEE e JSE – Loja Virtual Completa – Parte 17

[vídeo] MD5 com Delphi: Usando o Método Locar - Curso Aplicação Financeira Delphi 2009 e MySQ – Parte 32

[vídeo] MD5 com MySQL: Utilizando a função para Logar - Curso Aplicação Financeira Delphi 2009 e MySQL – Parte 31

Trabalhando com Cache - Parte 2


Você está em:





Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

