SóProvas


ID
1606918
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2015
Provas
Disciplina
Programação
Assuntos

Considere a classe Java abaixo.

public class Teste {
       public static void main(String[ ] args) {
              int [ ] num = {0, 0, 0, 0, 0, 0, 0};
              int c;
              c = 0;
             while (num [c]  != 10 && c < 7 ) {
                    c++;
              }
             System.out.print(c);
       }
}


Ao compilar e executar esta classe, será 


Alternativas
Comentários
  • 1 - ele testa se 6 é menor que 7--- não é

    2 - adiciona + 1

    3 - ao fazer c[7] --> dá pau, pois apesar do array ter tamanho 7, é 0 based, ou seja, os índices vão de 0 a 6

  • Concordo com amigo amigo acima

  • realmente se c++ estive-se depois do System.out.print(c); não daria o erro! (pegadinha hen.)

  • Não concordo Anderson, porque o erro está quando é executado a instrução num [c], sendo que o array está na posição 7, que não existe. Fiz o famoso "chinezinho" para testar a questão. 

    Estaria correta se a instrução c<7  fosse substituída por c<6, considerando que as posições começam a contar a partir de 0.

  • O erro esta em verificar (num [c]  != 10 ) antes de ( c -Desse modo quando 'c' = 7 o programa tenta acessar num[7] (que não exite) para testar a condição (num [c] != 10)

    Se o while estivesse assim :  while( c -Quando c=7 o laço se quebra na primeira condição (7

  • Pegadinha.

    O programador deveria ter escrito 

    "while ( c < 7 && num [c]  != 10) {" 

    Aí como o && é Short Circuit avaliaria a primeira parte e nem tentaria avaliar a segunda. Como ele fez na ordem inversa vai dar erro ao ver o num[7] antes de chegar a verificar c(7) < 7.

    Nesse ponto Java é igual a C.

     

  • b

    ArrayOutOfBoundsException é quando uma referencia ao indice do array é alem do que ele contém. É so lembrar que array é definido na compilação, seu tamanho nao muda. Logo, quando verifica seus valores vao ate num[6] se inicia do zero, quando c incrementar a 7, saira do array, causando o erro de arrayoutofboundsexception