Pegadinha Java

10 respostas
D

Pessoal, essa pegadinha cai em exames para certificação Java. Vejam se conseguem respondê-la:

class X {
       public static void main(String[] args) {
              int i = 0;
              while (i++ < args.length) {
                    System.out.print(args[i]);
              };
       }
 }

Considere que o método acima é chamado usando o seguinte comando:
java X A B C D E F

Qual o resultado?
a. Prints: XABCDEF
b. Prints: ABCDEF
c. Compile-time error
d. Run-time exception
e. None of the Above

[/code]

10 Respostas

R

Compile time error.

Tem um “;” .

Mas se tirar o “;” a resposta é A.

S

“rap32”:
Compile time error.

Tem um “;” .

Mas se tirar o “;” a resposta é A.

Aquele “X” é o nome da classe :slight_smile:

C

Da erro da compilacao!!

B

vou de letra B .

E

Naum compila… :razz:

J

acho que compila sim
pq da pra colocar varios ; seguindos e nao da erro no java
vou de B tb

R

B…

i++ == i = i +1

ou seja, i começo com zero, mas qndo vai pra linha System.out…, ele ja ta acresido

A

Alternativa E, nenhuma das anteriores!!! ele nao consegue encontrar a classe principal, por isso nao roda o progrma

J

“microfilo”:
B…

i++ == i = i +1

ou seja, i começo com zero, mas qndo vai pra linha System.out…, ele ja ta acresido

cara vc ta enganado

no for ou loopings mesmo usando o i++ o valor eh SEMPRE acrescido depois do bloco!!!

[]'s

S

Bom, as opiniões foram bem variadas, mas ninguém acertou. A resposta é D: erro em tempo de execução.
Na verdade, primeiro imprime BCDEF e depois ArrayIndexOutOfBoundsException.

No while:
Primeiro testa se i < length e DEPOIS incrementa, portanto:
Para i = 0: imprime a posição 1
Para i = 1: imprime a posição 2

Para i = 5 (o length de args): Não existe a posição 6 (vai de 0 a 5)

A: Prints: XABCDEF
Falso. Primeiro, porque o X é o nome da classe, e não um argumento. Segundo, o A não é impresso. Terceiro, a exceção.

b. Prints: ABCDEF
Mesma explicação da anterior, desconsiderando o primeiro motivo.

c. Compile-time error
O “;” é estranho e inútil, mas não dá erro. Pode colocar após todos os “}” que continuará sem dar erro.

Se isso tranqüiliza alguém, na minha prova não caiu nenhuma questão com um “;” após “}”, a menos que fosse necessário. :slight_smile:

Criado 24 de março de 2005
Ultima resposta 29 de mar. de 2005
Respostas 10
Participantes 9