Tokenização com Scanner

7 respostas
anderson.bonavides
  1. import java.util.*;
  2. class Brain{
  3. public static void main(String[] args){
  4. //INSIRA O BLOCO DE CÓDIGO AKI…
  5. }
  6. }

Qual opção inserida independentemente na linha 5 compila e produz a saída “123 82”?(MARQUE TODAS CORRETAS)

OPÇÕES:

A) Scanner sc = new Scanner(123 A C, 45 X5X, 76 82 L);

while(sc.hasNextInt()) System.out.print(sc.nextInt() + " ");

B) Scanner sc = new Scanner(“123 A C, 45 X5X, 76 82 L”).useDelimiter(" ");
while(sc.hasNext()) System.out.print(sc.nextInt() + " ");

C) Scanner sc = new Scanner(123 A C, 45 X5X, 76 82 L);

while(sc.hasNext()){

if(sc.hasNextInt()) System.out.print(sc.nextInt() + " ");

else sc.next(); }
D) Scanner sc = new Scanner(123 A C, 45 X5X, 76 82 L).seDelimiter(" ");

while(sc.hasNext()){

if(sc.hasNextInt()) System.out.print(sc.nextInt() + " ");

else sc.next(); }
E) Scanner sc = new Scanner(123 A C, 45 X5X, 76 82 L);

do{

if(sc.hasNextInt()) System.out.print(sc.nextInt() + " ");

}while (sc.hasNext() );
F) Scanner sc = new Scanner(123 A C, 45 X5X, 76 82 L).seDelimiter(" ");

do{

if(sc.hasNextInt()) System.out.print(sc.nextInt() + " ");

}while (sc.hasNext() );

RESPOSTA: C e D.

Alguem poderia dar uma força nessa resposta, ja revisei o assunto mas não compreendi muito bem…

vlw t+

7 Respostas

O

bom, sou novato no java mas tentarei esclarecer isso pra vc =]

na verdade, nenhuma das respostas te da a saida “123 82”, talvez a saida correta seria a sequencia de inteiros dentro da string (“123 45 76 82”), ai sim vc teria a C e a D como corretas…

por partes:

em primeiro lugar, utilizar o metodo useDelimiter(" ") é a mesma coisa que utilizar o default delimiter (que é o caracter espaço)

A) sc.hasNextInt() não avança o ponteiro para o proximo resultado, apenas verifica se o proximo resultado pode ser um inteiro, então a saída é apenas “123”

B) este código gera uma exceção do tipo InputMismatchException, pq após exibir o token “123”, o proximo token dentro do Scanner (a letra “A”) não pode ser um int e é tratado como um pelo método nextInt()

C e D) aqui você consegue obter a sequencia “123 45 76 82”, pois utilizando sc.next() vc consegue avançar dentro dos tokens do scanner… veja que esta sequencia não é a sequencia do enunciado, porisso a questão pode estar bugada :smiley:

E e F) nestes 2 códigos vc tem um loop infinto pq o método hasNext() dentro do while apenas verifica se há um novo token, mas não avança o ponteiro

e por favor me corrijam se estiver algo errado
vlw =]

Java_Player

Esta questão é do livro da Kathy Sierra em português??

Engraçado, tem uma questão praticamente igual a essa no livro em inglês. Só que a String é “123 A 3b c,45, x5x,76 82 L”.

A resposta está como C e D também.

Talvez seja um erro no livro traduzido.

icarocd

arrumei o livro em portugues mas ja to me arrependendo com tantos erros grosseiros e distorcoes da versao em portugues :frowning:

anderson.bonavides

Desculpem não ter postado antes é que tava sem net e parece q vou ficar denovo… #) a resposta é C e F…

=]

O livro em português as vezes não é muito claro é preciso reler algumas vezes para poder compreender a tradução.

Raff

mesmo assim cara não tem como sair aquilo que voce falow cara … como nosso amigo OrGg falow a saida seria todos os inteiros que voce passou no construtor do Scanner(“123 A C, 45 X5X, 76 82 L”); dai sim a resposta seria C e D…

anderson.bonavides

Vou rever a questão.

Omeganosferatu

O livro em portugues não é TAO diferente do ingles, existem algumas diferenças mas nada que faça do livro um impecilho pro estudo, muito pelo contrário ajuda da mesma forma que o livro em ingles se estudado de forma correta
=)

Criado 1 de agosto de 2007
Ultima resposta 17 de ago. de 2007
Respostas 7
Participantes 6