Questão FC373264
Considere o código Java abaixo. public class Prova { public static void main(String[] args) { int[][] dados = new int[5][]; for (int i = 0; i < 5; i++) { dados[i] = new int[5]; for
Linguagens de Programação
FCC · 2022
Considere o código Java abaixo.
public class Prova {
public static void main(String[] args) {
int[][] dados = new int[5][];
for (int i = 0; i < 5; i++) {
dados[i] = new int[5];
for (int j = 0; j < 5; j++) {
dados[i][j] = i + j;
System.out.println(dados[i][j]);
}
}
}
}
Sobre o código
- ocorrerá uma exceção do tipo NullPointerException, pois na terceira linha não foi definido o número de linhas da array dados.
- ao tirar o comando dados[i] = new int[5]; o programa executará normalmente.
- i < 5 na quarta linha pode ser substituído por i < dados.length sem afetar a lógica de execução.
- o comando int[][] dados = new int[5][]; precisa obrigatoriamente ser substituído por int[][] dados = new int[5][5];.
- ocorrerá uma exceção do tipo NullPointerException no comando dados[i][j] = i + j;.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A expressão i < 5 fixa o número de iterações em 5 porque a matriz foi declarada como int[][] dados = new int[5][]. Substituir por i < dados.length é equivalente, pois dados.length retorna exatamente o número de linhas (5) da matriz, fazendo o laço percorrer os índices 0 a 4.
Usar dados.length torna o código mais robusto e legível, evitando números "mágicos" espalhados. Se no futuro a declaração mudar para outra dimensão, o laço continuará correto sem precisar alterar a condição.
Importante: como cada linha é inicializada em tempo de execução com new int[5], a iteração sobre as colunas também poderia usar, de forma análoga, j < dados[i].length para manter a mesma flexibilidade.
Conteúdo do catálogo FC Concursos · Atualizado em