Argumentos de linha de comando

7 respostas
diego2005

Pessoal, qual a resposta correta para a seguinte questão:

public class CommandArgs
{
   public static void main(String[] args)
   {
       String[][] argCopy = new String[2][2];

       int x;

       argCopy[0] = args;

       x = argCopy[0].length;

       for(int y = 0; y < x; y++)
           System.out.print(argCopy[0][y]); 
   }
}

a chamada de linha de comando sendo:

java ComandArgs 1 2 3

qual será o resultado?

a. 0 0
b. 1 2
c. 0 0 0
d. 1 2 3
e. A compilação falhará
f. Uma exceção será lançada em tempo de execução

Fiquei na dúvida, quem puder responder e comentar o por que da resposta...

7 Respostas

E

Em minha opinião, A reposta é a:
f. Uma exceção será lançada em tempo de execução
O programa está a tentar "passar" para a primeira linha de argCopy, que tem somente 2 colunas, um array de 3 elementos: 1 2 3 (argumentos de linha de comandos). Logo, sera gerada uma excepção ao tentar copiar o terceiro elemento (que "não cabe" em argCopy).
Penso que este será o resultado obtido. Mas não há nada como experimentar...

diego2005:
Pessoal, qual a resposta correta para a seguinte questão:
public class CommandArgs
{
   public static void main(String[] args)
   {
       String[][] argCopy = new String[2][2];

       int x;

       argCopy[0] = args;

       x = argCopy[0].length;

       for(int y = 0; y < x; y++)
           System.out.print(argCopy[0][y]); 
   }
}

a chamada de linha de comando sendo:

java ComandArgs 1 2 3

qual será o resultado?

a. 0 0
b. 1 2
c. 0 0 0
d. 1 2 3
e. A compilação falhará
f. Uma exceção será lançada em tempo de execução

Fiquei na dúvida, quem puder responder e comentar o por que da resposta...

adriano.ferranti

Me parece que é a opção D, porque o array pode ser atribuido a um outro de tamanho diferente, desde que seja do mesmo tipo. Correto?

diego2005

Pois é, a resposta correta é a letra D, mas por que??? O que acontece quando atribuimos um array maior a um menor??? Eu també pensei que fosse a letra F.

Se alguém puder explicar…

Valeu.

F

A coisa é simples

Array - > [1] [2] [3]
Index -> [0] [1] [2]

O tamanho do array é [2] que contem 3 elementos
É so se ligar que um array começa do 0.

acho que é isto.:expressionless:

t+

diego2005

Cara, posso estar muito enganado, mas se um array possui tamanho 2:

String[] teste = new String[2];

ele terá apenas 2 elementos:

teste[0] = “Programação”;
teste[1] = “Java”;

1112

Vamos lá, o que acontece:

Você criou um array de arrays de Strings, com duas posições cada e aproveitou e já criou dois arrays de Strings com duas posições cada também.

Assim, argCopy[0] está referenciando um array de Strings com duas posições, enquanto argCopy[1] está referenciando outro array de Strings com duas posições. Mas o que a assinatura “String[][] argCopy” indica é que cada uma das duas posições de argCopy deve referenciar um array de Strings, não limita a quantidade. Ou seja, a linha:

Faz com que a primeira posição de argCopy referencie o array referenciado por args. A segunda continua referenciando o array de Strings com que argCopy foi inicializado, então:

imprimiria 2.

Da mesma forma, o seguinte código funcionaria numa boa:

String[][] outroArray = new String[3][3]; argCopy = outroArray;

Claro que, neste caso, argCopy[0] não referenciaria mais o mesmo array que args referencia, mas sim um array de Strings com 3 posições, com null em cada uma.

Capisce?

diego2005

Opa…agora ficou bem mais claro, espero não errar mais questões desse tipo.

Valeu pela explicação…

Criado 27 de maio de 2006
Ultima resposta 28 de mai. de 2006
Respostas 7
Participantes 5