Ejercicio Arrays Java

PeandPe

Buenas

Tengo otro problemilla con Java, ésta vez con los Arrays.

El ejercicio pide lo siguiente:

  1. Cargar mediante un bucle un array de 50 posiciones con los primeros números pares y mostrar el número que hay en la posición 30.

Mi código es:

spoiler

Y el resultado es 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
30

El imprimir pares es simplemente para ver que me está guardando en el array.

¿Cuál es el problema? Los impares no los guarda, pero se salta los espacios de memoria.

¿Qué puedo hacer?

Gracias!

NeB1

varias cosas, primero, cuando haces

pares = i;

supongo que querías hacer

pares[i] = i;

(sobreescribir solo una posición del vector, no todo el vector).

Después ten en cuenta que aunque el vector tenga 50 elementos, tu solo vás a rellenar 24 posiciones, ya que cuentas del 1 al 49 y te quedas con los pares. Tendrías que contar del 1 al 100 para rellenar las 50 posiciones y completar el array, es decir, dos veces su largaria. Además, como te acabo de decir, cuentas del 1 al 49, porque has puesto < pares.length en lugar de <=

Otro tema más, es que si guardas solo cuando 'i' es par, y además usas i para indexar la posición en el vector, entonces solo estás accediendo a las posiciones pares del vector.

PeandPe

Lo de pares=i estaba puesto así, no se porqué no ha aparecido en el foro de ese modo.

Ya lo he solucionado de todos modos:

spoiler

WTF! Porque no sale el spoiler??

EDIT: Y porque sale en cursiva? xD

neil90

#1 Me parece que estás interpretando mal el enunciado. Dice que rellenes el array con los números pares, no con los pares e impares.

for (int i = 0, j = 0; i < pares.length; i++, j += 2)
    pares[i] = j;

Sale en cursiva por el [ i ] de acceso al elemento del array. Pon el código entre tags [ code ] y no pasará eso.

barneyST

Con este código se consiguen los primeros 50 números pares.
Estoy considerando el 0 como número par, si para ti no fuera par, debes comenzar con num = 1.

int[] vector = new int[50];
int num = 0;
int i = 0;

do {
   if ( num%2 == 0 ) {  // Si el número es par
     vector[i] = num;   // Lo guardamos en la posicion = 0
     num++;   // Pasamos al siguiente número
     i++;   // Y aumentamos el contador de posiciones
   }
   num++;   // Si no es par, se aumenta el numero
} while ( i <=49 );   // Mientras que la cantidad de números guardados sea <=49 (50 elementos)

Para visualizar el vector/array de números:

for (int i=0; i<vector.length(); i++) {
   System.out.print(vector[i]+" ");
}

Saludos.

1
Mandarino

Te marco los cambios que haria yo:

cosa 1: los vectores empiezan en la posicion 0
cosa 2: pares = i <--- asignas un entero a un array, sin sentido, te tendria que dar error de sintaxis. Cambiado a: pares = i2 (la posicion x del vector vale 2x). Los numeros pares son los numeros multiples de 2. Si te piden numeros multiples de 3000, harias 3000 iteraciones para llegar al siguiente, o simplemente sabes que el n-essimo numero de la lista vale 3000*n?


Codigo:

public class Ejercicio4
{
public static void main(String args[])
{
int[] pares=new int[50];

for(int i=0; i < pares.length; i++)
{
pares=i*2;
}

System.out.println();
System.out.println(pares[30]);
}
}

tOWERR

#6
Si pones "pares = i*2" estas metiendo en una variable pares que no existe el valor de i por 2, eso está mal.
Seria algo asi:

spoiler
VipeR_CS

La estáis liando parda con el

[i]

, que lo sepáis. Se os pone en cursiva y desaparece el índice del array por lo que parece que asignais el valor directamente al array y no a una posición. Poned el código entre tags [ code ] blablabla [ /code ] sin espacios obviamente.

Mandarino

#7 en lo que escribi esta, lo que no se es porque no sale XD (cuando le doi a editar está ahi)

JuAn4k4

for(int i=2; i<=100;i+=2) {
pares[i/2 -1] = i;
}

El 0 es par?

for (int i=1; i<50; i++) {
pares[i-1] = i*2;
}

6 años después
-

Estaba buscando por google como resolver este ejercicio porque estaba hasta la polla ya y me ha traído a este hilo xd, gracias a vuestras ideas he podido crear mi código algo más sencillo:


package ejercicios;

public class ejercicio {

public static void main(String[] args) {


	int vector [] = new int[20];
	int pares = 0;

	for (int i = 0; i < vector.length; i++) {

		pares = i*2;

		System.out.println(pares);
	}
}
}

Te imprime los 20 primeros números par (incluyendo el 0).

daviletor

Aunque ya un poco tarde...

Solución

Ya como curiosidad...
'\n' es un carácter que representa un salto de linea, mejor que poner un System.printl() vacio

Otra forma de poner el salto de linea es obteniéndolo directamente del sistema operativo.

String saltoDeLinea = System.getProperty("line.separator");

String op1 = "Esto es la linea 1 \ny esto la linea 2";
String op2 = "Esto es la linea 1" + saltoDeLinea + "y esto la linea 2";

op1 y op2 son sinónimos, pero es mejor la op2 (sobretodo de cara a ficheros) ya que es independiente del sistema operativo.
Aquí explican mejor la diferencia. Aunque por ahora da un poco igual lo que uses, ya que estas empezando, pero en un futuro quédate con esto.

8 días después
bobspnhard

public class Ejercicio4
{
public static void main(String args[]){
int[] pares=new int[50];
int j = 0;
for(int i=1;i<pares.length;i++)
{
if (j%2==0)
{

pares=J;
System.out.print(pares);
}
j++;
}

     System.out.println(pares[30]);
}

}

prueba asi:)

Usuarios habituales

  • -EXE-
  • JuAn4k4
  • Mandarino
  • tOWERR
  • barneyST
  • PeandPe
  • NeB1