textos podem ser considerados como objetos do tipo String, InputStream e arquivos.Na PraticaAntes de tudo, e necessario saber algumas funcoes e aspectos que essa classe tem para exercer o funcionamento dentro do esperado. Quando invocada a classe Scanner, o compilador pedira para fazer a seguinte importacao:Listagem 1: Importando a classe Scannerimport java.util.Scanner;Como descrito na introducao, essa classe ajuda na leitura dos dados informados. Para fazer essa acao na pratica, e necessario criar um objeto do tipo Scanner que passa como argumento o objeto System.in dentro construtor, do seguinte modo:Listagem 2: Declaracoes do Scannerimport java.util.Scanner; public class TestaDeclaracaoScanner { public static void main(String[] args) { //Le a partir da linha de comando Scanner sc1 = new Scanner(System.in); String textoString = "Maria Silva"; //Le a partir de uma String Scanner sc2 = new Scanner(textoString); }}Listagem 3: Contagem de tokens em uma stringimport java.util.Scanner; public class ContaTokens { public static void main(String[] args) { int i = 0; Scanner sc = new Scanner(System.in); System.out.print("Digite um texto:"); while(sc.hasNext()){ i++; System.out.println("Token: "+sc.next()); } sc.close(); //Encerra o programa }}O objeto System.in e o que faz a leitura do que se escreve no teclado. Veja abaixo como sao invocados alguns dos metodos principais que correspondem com a assinatura que retorna um valor do tipo que foi invocado. Ou seja, para cada um dos primitivos existe uma chamada do metodo para retornar o valor especificado na entrada de dados, sempre seguindo o formato nextTipoDado().Listagem 4: Metodos invocados da classe ScannerScanner sc = new Scanner(System.in); float numF = sc.nextFloat();int num1 = sc.nextInt();byte byte1 = sc.nextByte();long lg1 = sc.nextLong();boolean b1 = sc.nextBoolean();double num2 = sc.nextDouble();String nome = sc.nextLine();Como a classe Scanner trabalha com entrada de dados, sempre e uma boa pratica fazer o uso do try/catch para que os sistemas fiquem bem construidos. A Figura 1 mostra o exemplo do erro quando o codigo nao tem tratamento de excecao. Nesse caso, o usuario tenta inserir letras em uma linha que esperava ler o valor do tipo double.Figura 1: Demonstracao da excecao InputMismatchExceptionMetodos da ClasseNa tabela abaixo sao apresentados os principais metodos da classe Scanner.MetodoDescricaoclose()Fecha o escaneamento de leitura.findInLine()Encontra a proxima ocorrencia de um padrao ignorando mascaras ou strings ignorando delimitadores.hasNext()Retorna um valor booleano verdadeiro (true) se o objeto Scanner tem mais dados de entrada.hasNextXyz()Retorna um valor booleano como verdadeiro (true) se a proxima entrada a qual Xyz pode ser interceptada como Boolean, Byte, Short, Int, Long, Float ou Double.match()Retorna o resultado da pesquisa do ultimo objeto Scanner atual.next()Procura e retorna a proxima informacao do objeto Scanner que satisfazer uma condicao.nextBigDecimal(), nextBigInteger()Varre a proxima entrada como BigDecimal ou BigInteger.nextXyz()Varre a proxima entrada a qual Xyz pode ser interceptado como boolean, byte, short, int, long, float ou double.nextLine()Mostra a linha atual do objeto Scanner e avanca para a proxima linha.radix()Retorna o indice atual do objeto Scanner.remove()Essa operacao nao e suportada pela implementacao de um Iterator.skip()Salta para a proxima pesquisa de um padrao especificado ignorando delimitadores.string()Retorna uma string que e uma representacao do objeto Scanner.Tabela 1: Metodos da classe ScannerVamos mostrar alguns exemplos praticos do que pode ser feito com a classe Scanner.As Listagens 5