Java - Ciclos, arreglos, condiciones java

 
Vista:

Ciclos, arreglos, condiciones java

Publicado por Nayra (2 intervenciones) el 28/03/2017 03:50:25
Hola, bueno les comento.
Tengo esta tarea
Elabora un programa donde declares un arreglo de 25 elementos, utiliza la función RANDOM y con ella, inicializa tu arreglo con números aleatorios entre 1000 y 9999 utilizando un ciclo for.

Posteriormente imprime todos los elementos de tu arreglo con un ciclo while.

Con un ciclo do-while imprime los números pares de tu arreglo, la suma y el total de ellos.

Con un ciclo while imprime los números impares de tu arreglo, la suma y el total de ellos.

Al final imprime también, el número mayor del arreglo, el número menor y la suma de todos los números del arreglo.

Bueno, pues empecé y esto es lo que llevo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Random;
public class Ciclos{
	public static void main(String args[]){
		int m = 1;
		int p = 0;
		int suma = 0;
		int[] num = new int[25];
		Random  rnd = new Random();
		for (int i = 0; i < 25; i++) {
			num[i] = rnd.nextInt(9999-1000+1)+1000;
		}
		while(m < 25) {
			System.out.println(num[m]);
			m++;
		}
		do {
			if (num[m]%2 == 0) {
					System.out.println(num);
			}
			suma = suma + num[m];
		} while(num[m] = 0);
			System.out.println("La suma de los pares es: " + suma);
 
	}
}

El problema es que a la hora de correr el programa y mostrar en pantalla los 25 números aleatorios marca un error por haberme excedido con el array y haber sobrepasado los 25 lugares diponibles y ya no hace nada del do-while. Evidentemente no he terminado y con esto no sé si pueda. No pido que me resuelvan el programa pero si que cuando menos me indiquen si voy más o menos bien y qué debo hacer para corregir el error que no sale en la compilación si no en la ejecución.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ciclos, arreglos, condiciones java

Publicado por Nayra (2 intervenciones) el 28/03/2017 04:28:14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Random;
public class Ciclos{
	public static void main(String args[]){
		int m = 1;
		int cont = 0;
		int suma = 0;
		int suma1 = 0;
		int suma2 = 0;
		int menor = 0;
		int mayor = 0;
		int[] num = new int[25];
		Random  rnd = new Random();
		for (int i = 0; i < 25; i++) {
			num[i] = rnd.nextInt(9999-1000+1)+1000;
		}
		while(m < 25) {
			System.out.println(num[m]);
			m++;
		if(num[m] < menor){
			menor = num[m];
		}
		if(num[m]>mayor){
			mayor = num[m];
		}
		suma = suma + num[m];
		}
		do {
			if (num[m]%2 == 0) {
					System.out.println(num[m]);
					cont = cont++;
			suma1 = suma1 + num[m];
			}
		}
		while(m < 25);
			System.out.println("La suma de los pares es: " + suma1);
			System.out.println("El total de pares es: " + cont);
 
		while(m < 25) {
			if (num[m]%2 != 0) {
					System.out.println(num[m]);
					suma2 = suma2 + num[m];
					cont = cont++;
			}
			System.out.println("La suma de los impares es: " + suma2);
			System.out.println("El total de impares es: " + cont);
		}
		System.out.println("La suma de todos los números de la serie es: " + suma);
		System.out.println("El mayor número de la serie es: " + mayor);
		System.out.println("El menor número de la serie es: " + menor);
	}
}

Aquí lo que tengo que no sé aún si se ejecute lo demás sin problemas.
El mensaje que sale al final delos 25 números en pantalla es
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 25 at Ciclos.main(Ciclos.java:19)"
Necesito mucha ayuda jeje. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ciclos, arreglos, condiciones java

Publicado por juanki (131 intervenciones) el 28/03/2017 11:08:46
Hola

El error es muy muy claro, hay que aprender a interpretarlos, está accediendo a un elemento del array que no existe. Además hasta te dice en la línea en la que ocurre.

Asi por encima veo que usas la variable m para varios bucles, pero no la reinicias a 0, por lo que en el segundo bucle vale 25 y ahi tienes el error.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ciclos, arreglos, condiciones java

Publicado por Renzo (232 intervenciones) el 28/03/2017 18:39:34
Hola
acá hice unos ajustes a tu clase:

En general tu programa tenía claro lo que debía hacer, estaba bien organizado. Solo algunos errores propios de iniciar a programar:

al finalizar los bucles, la variable m se queda con el último valor (25), por lo que si deseas usarlo nuevamente, debes setear nuevamente a cero.

en la línea 20 añadí el valor de m para que tengas como referencia con que valor inicia y con que valor termina el ciclo
"System.out.println(m + " : " + num[m]);"
Luego lo quitas

por buena práctica se sueles aumenta el valor del pivote m o los contadores siempre como ultima sentencia de los bucles "m++"

veo que hacías cont = con++; debería ser cont++;


Saludos

Espero te sirva.

Renzo

///////////////////////////////////////

import java.util.Random;
public class Ciclos{
public static void main(String args[]){
int m = 0;
int cont = 0;
int suma = 0;
int suma1 = 0;
int suma2 = 0;
int menor = 9999;
int mayor = 0;
int[] num = new int[25];
Random rnd = new Random();
for (int i = 0; i < 25; i++) {
num[i] = rnd.nextInt(9999-1000+1)+1000;
}



while(m < 25) {
System.out.println(m + " : " + num[m]);

if(num[m] < menor){
menor = num[m];
}
if(num[m]>mayor){
mayor = num[m];
}
suma = suma + num[m];

m++;
}

m=0;
do {
if (num[m]%2 == 0) {
System.out.println(num[m]);
cont++;
suma1 = suma1 + num[m];
}
m++;
}
while(m < 25);

System.out.println("La suma de los pares es: " + suma1);
System.out.println("El total de pares es: " + cont);

m=0;
cont=0;
while(m < 25) {
if (num[m]%2 != 0) {
System.out.println(num[m]);
suma2 = suma2 + num[m];
cont++;
}
m++;
}

System.out.println("La suma de los impares es: " + suma2);
System.out.println("El total de impares es: " + cont);

System.out.println("La suma de todos los números de la serie es: " + suma);
System.out.println("El mayor número de la serie es: " + mayor);
System.out.println("El menor número de la serie es: " + menor);
}
}

///////////////////////////////////////
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar