Ayuda con Arrays en Java

y34hl0ve

Buenas chicos! Estoy estudiando DAW, acabamos de empezar con Arrays y tengo varias dudas con un ejercicio que me han mandando y no consigo resolver, espero que me podáis echar una mano. Decir que no pido que me lo resolváis simplemente, me gustaría entender que es lo que estoy haciendo mal y así poder aprender.

Enunciado:

spoiler

Mi ejercicio + dudas:

spoiler

Probablemente mi código y mis errores sean un horror, siento el sangrado de ojos.

Gracias!

Camperito

Mi primer consejo es , que dejes de usar el español, por el bien de tu carrera como profesional. Mi segundo consejo es, que separes las asignaciones y los comparadores de las variables.

Mi tercer consejo es, que no le pidas a gente random de internet que te haga las tareas de clase y investigues por tu cuenta. DIcho esto, yo me voy por mi izquierda

1 5 respuestas
y34hl0ve

#2 Gracias por tus dos primeros primeros consejos y no estoy pidiendo que me hagan las tareas de clase (que son opcionales), pero llevo desde anoche atascado con el ejercicio y no consigo resolverlo por mucho que busco (que realmente no sé ni lo que buscar), por eso me gustaría que alguien me guíe un poco al ver el fallo o me explique que estoy haciendo mal para poder aprender.

1 respuesta
malahierba93

#2 respecto al primer consejo te refieres a cómo llama a las variables?

Lecherito

#2 Esta preguntando una duda, que pasa que tu no has tenido nunca dudas? Eres el mas listo de la clase? Vaya tela con la gente.

Pues cosas que podrias hacer mejor:

  1. No necesitas inicializar la variable vector para nada. Si guardas un int con el numero maximo puedes usar eso como limite para los for que tienes, ya que el uso que le das siempre es vector.length xD
  2. En los bucles, si quieres los pares siempre puedes hacer i+=2 en vez de i++, asi te ahorras el if, y la mitad de las pasadas del bucle
  3. Para que necesitas que el metodo pares devuelva algo?
  4. El vector pares se puede inicializar una vez que empiezas a meter los pares (por lo que el metodo pares se puede incluso borrar o simplificar de una manera bestial). Recuerda que los pares siempre van a ser X/2 donde X es el maximo (que le pasas al constructor)
  5. En el toString como tu has dicho, si pones un array primitivo te va a salir el hash de ese objeto (ya que en verdad un array es un objeto), por lo que tienes 2 opciones. Como tu has dicho el Arrays.toString/Arrays.deepToString. O encadenar tu todos los items del array. Sinceramente haria el Arrays.deepToString y me quitaria de problemas, si te dicen algo pues siempre lo puedes cambiar pero es algo de la stdlib y lo vas a tener siempre.

Sinceramente, sigue practicando y tonteando con el codigo hasta que te vayas dando cuenta de todas estas cositas que con la experiencia se ven facil!

PD: En verdad el de arriba tiene razon con lo de nombres en espa;ol, al final lo ves como un handicap enorme.

6 2 respuestas
unaifg
#1y34hl0ve:

Estoy estudiando DAW,

¿Estás en primero o en segundo?

1 respuesta
cabron
#1y34hl0ve:

¿como preparo un atributo en el constructor que tan solo contenga los espacios de los números pares si todavía no los se?

La cantidad de números pares de 0 a N, siempre es (N/2)+1, si no vas a contar el 0 entonces es N/2

imsack

#3 Mira el for del metodo pares y quita el signo =

1
7sega7

#2 Empiezas a usar el inglés porque los métodos y variables te empiezan a sonar guay y acabas con medio proyecto en spanglish.

y34hl0ve

#5 2. Al principio había sacado los pares como tu dices, pero tengo mas ejercicios por el estilo y ahí si que voy a necesitar recorrer el vector entero, por lo que para practicar lo hice así. Cuando lo consiga lo cambiaré ^^

  1. Para nada, soy retrasado.
  2. Pero el ejercicio dice: Ese constructor deberá preparar un atributo que guardará el vector con los números pares ¿como preparo el vector en el constructor si no se el espacio aún? El profesor me enseñó que en el constructor no se crean atributos, que siempre se crean "encima de el". ¿Meto en el constructor int[] vectorPares; y lo inicializo en el método de meterPares()?
  3. He probado el Arrays.deepToString y me salta error

Muchas gracias por la ayuda tío, ahora me tengo que ir, pero esta noche cuando vuelva limpiaré el código e intentare resolver el error del toString.

#6 Primero

Vale, me ha quedado claro lo de ingles jajaja gracias a todos.

1 respuesta
JuAn4k4
var evenNumbers = int[max/2+1];
fori=0;i<evenNumbers.lenght;i++;
  evenNumbers[i]=i*2;
Lecherito

#10 pues patine con el deep, no recordaba que era para arrays de objetos y el toString para los primitivos.

Y para el espacio, se sabe perfectamente, ya se ha dicho por el hilo!!

1
HeXaN

#5 Pero mira quién es antes de responder jajaja. Menos mal que tenemos a usuarios como tú.

2 respuestas
Lecherito

#13 No se ni quien es. Y para la proxima vez se me va a olvidar

2 respuestas
HeXaN

#14 Yo te lo recordaré las veces que haga falta.

y34hl0ve

#13 Le respondí al llegar a casa por mensaje privado, ya que me daba verguenza no tener narices a sacar lo del toString por muchas vueltas que le doy. Debí haber respondido por aquí, fallo mío.

#14 Perdona si te ha molestado. Vale, entendí mal mensaje de los espacio para los números pares

2 respuestas
actionchip

#16 Creo que están hablando de #2 y no de ti.

1 1 respuesta
y34hl0ve

Estoy buscando como hacer un Override de un toStirng para un array de enteros y de la mayoría de respuestas que aparecen no entiendo ni un 10% del código que ponen :sweat_smile:

Cuando te refieres a encadenar elementos del array te refieres a hacer

return "{" + vectorPares[1] + " " + vectorPares[2];

Es la única forma que encuentro de sacar todos los elementos en un toString, pero no se si es correcta.

1 respuesta
RTeks

#18 pero devuelve todo en un bucle que no sabes cuantos valores vas a tenr en ese array.

String return="";
for(int i=0;i<vectorPares.length;i++){
return+=vectorPares[i]+"\n";
}

o algo asi

1 1 respuesta
y34hl0ve

#19 No sabía que se podía hacer un bucle en toString! Ayer estaba pensando en hacer un método y llamarlo en el espacio del vector, pero no se me ocurría como. Muchas gracias!

1 respuesta
Lecherito

#20 para que quieres ese \b, xD

Piensa que el toString sigue siendo un método normal, puedes hacer todo lo que te plazca

1 2 respuestas
pantocreitor

#21 borrar la última coma y espacio que se queda suelto me figuro.
Yo suelo hacer un substring de la cadena para eso.

1
y34hl0ve

#21 Para borrar el último espacio y la coma, si no la salida no queda como la pide el profesor jaja

HeXaN

#16 #17 Exacto xD

1
JuAn4k4

Si usas StringBuilder ya lo petas

1

Usuarios habituales

  • JuAn4k4
  • HeXaN
  • y34hl0ve
  • Lecherito
  • RTeks
  • actionchip
  • imsack