Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
Manipulación de arreglos: agregar elementos

Soy nuevo en la programación y acabo de aprender sobre array. Sin embargo, en una de las preguntas del cuestionario, no puedo entender por qué mi respuesta es incorrecta. Traté de explicar mi pensamiento.

La pregunta es:

 int[] b = { 1, 2, 3 }; int[] c = b; c[0] += b[2]; c[1] += b[1]; c[2] += b[0]; System.out.println(c[0] + c[1] + c[2]);

Mi opinión es que, aunque la matriz es un tipo de referencia, int[] c = b aún puede tratarse como

 int [] c = { 1, 2, 3 }; // the same as int [] b c[0] += b[2] means c[0] = c[0] + b[2] = 1 + 3 = 4 c[1] += b[1] means c[1] = c[1] + b[1] = 2 + 2 = 4 c[2] += b[0] means c[2] = c[2] + b[0] = 3 + 1 = 4

Entonces pensé que la salida es 12. Sin embargo, la respuesta es 15.

Lamento mucho haber hecho una pregunta tan básica, pero me preguntaba si alguien me puede ayudar a entender cómo llegar a 15. ¡Muchas gracias!

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

en realidad, Java copia matrices por sus referencias, no por valores. entonces en la última línea de su código, b[0] se cambia a 4 entonces

 c[2] += b[0] means c[2] = c[2] + b[0] = 3 + 4 = 7

por lo que su salida es 15. Si desea copiar una matriz sin referencia, puede hacer esto:

 int[] c = Arrays.copyOf(b, b.length);

ahora, su salida debe ser 12.

over 4 years ago · Santiago Trujillo Report

0

La última declaración (c[2] + b[0]) generará 7 y no 4 porque b[0] se ha actualizado a 4 en la primera declaración ingrese la descripción de la imagen aquí

entonces la salida será 4 + 4+ 7 que es 15.

over 4 years ago · Santiago Trujillo Report

0

Como c y b se refieren a la misma matriz, cuando c[0] se cambia a 4, significa que b[0] también es 4. Por lo tanto, el resultado de c[2] += b[0] es 3 + 4 = 7 , y la suma total de todos los elementos es 4 + 4 + 7 = 15 .

Asignando una referencia a la matriz int[] c = b; crea solo un alias y NO crea una nueva instancia de la matriz como en el caso de su copia (usando los métodos Arrays.copyOf , Arrays.copyOfRange , System.arraycopy ) o clonación int[] c = b.clone();

over 4 years ago · Santiago Trujillo Report

0

Dado que establece c = b , esto significa que cualquier cambio que realice en c se reflejará en b y viceversa, ya que hacen referencia a la misma matriz. Si desea que b y c sean matrices separadas, debe usar Arrays.copy() .

Para su problema, ahora podemos ir paso a paso para analizar cómo cambian los valores durante cada paso:

 int[] b = { 1, 2, 3 }; int[] c = b; c[0] += b[2]; //c[0] = c[0] + b[2] = 1 + 3 = 4 //b[0] = 4 // b and c = {4, 2, 3} c[1] += b[1]; //c[1] = c[1] + b[1] = 2 + 2 = 4 //b[1] = 4 //b and c = {4, 4, 3} c[2] += b[0]; //c[2] = c[2] + b[0] = 3 + 4 = 7 //b[2] = 7 //b and c = {4, 4, 7} System.out.println(c[0] + c[1] + c[2]); //4 + 4 + 7 = 15 :)

¡Espero que esto haya ayudado! Por favor, hágamelo saber si necesita más aclaraciones o detalles :)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!