Java - problemas cuando el código pide saber el valor menor (array)

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

problemas cuando el código pide saber el valor menor (array)

Publicado por Gabriel (3 intervenciones) el 25/12/2020 00:02:01
buenas noches, disculpen la molestia pero tengo problemas cuando el código pide saber el valor menor, no se que mas hacer. Gracias de antemano!

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
Scanner teclado = new Scanner(System.in);
 
double[] facturacion = new double[6];
double total = 0, maxima = 0, minima = facturacion[0], promedio = 0;
int i = 0, n = 0;
 
 
System.out.println("Informar Facturacion por mes, hasta 6 meses");
 
for(i = 0; i < facturacion.length; i++)
{
 
    n = i+1;
    System.out.print("Mes "+n+" = ");
facturacion[i] = Double.parseDouble(teclado.next());
 
total += facturacion[i];
promedio = total/facturacion.length;
 
if( facturacion[i] > maxima ){
    maxima = facturacion[i]; }
 
if (facturacion[i] < minima){
    minima = facturacion[i]; }
}
 
System.out.println("");
System.out.println("Facturacion Total = "+ total);
System.out.println("Promedio de Facturacion = "+ promedio);
System.out.println("Maxima Facturacion = " + maxima);
System.out.println("Minima Facturacion = " + minima);
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problemas cuando el código pide saber el valor menor (array)

Publicado por Kabuto (1381 intervenciones) el 25/12/2020 21:09:21
El problema es que procesas los datos al mismo tiempo que los pides.
Y eso no funcionará.
Por ejemplo, nada más empezar en mínima le dices que tome como valor de referencia lo que haya en el primer elemento del arreglo

1
minima = facturacion[0]

Pero como todavía no has pedido datos, en ese primer elemento arreglo no hay nada. Solo valores 0.
Por eso mínima no funciona, porque el valor de referencia inicial es 0.
Y 0 va a ser menor que cualquier valor que introduzcas por teclado.

El calculo del promedio también se ha de hacer cuando ya se tengan TODOS los datos introducidos en el arreglo, y no mientras se van pidiendo.

Deberías hacer dos bucles, uno para pedir los valores por teclado y guardarlos en el arreglo.
El otro para realizar los cómputos con los valores que, ahora sí, ya están TODOS en el arreglo.
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: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

problemas cuando el código pide saber el valor menor (array)

Publicado por Gabriel (3 intervenciones) el 25/12/2020 22:08:53
primero que nada, gracias por la respuesta. Hice lo que me dijiste lo separe en dos bucles, pero nunca me toma el valor de facturacion[0]. De hecho utilizo el Debugger para ver como va completando los valores y a la variable mínima nunca le asigna ningún valor.
Gracias!

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
for(i = 0; i < facturacion.length; i++)
{
 
    n = i+1;
    System.out.print("Mes "+n+" = ");
facturacion[i] = Double.parseDouble(teclado.next());
}
 
for(i = 0; i < facturacion.length; i++)
{
total += facturacion[i];
promedio = total/facturacion.length;
 
if( facturacion[i] > maxima ){
    maxima = facturacion[i]; }
 
if (facturacion[i] < minima){
    minima = facturacion[i]; }
}
 
System.out.println("");
System.out.println("Facturacion Total = "+ total);
System.out.println("Promedio de Facturacion = "+ promedio);
System.out.println("Maxima Facturacion = " + maxima);
System.out.println("Minima Facturacion = " + minima);
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

problemas cuando el código pide saber el valor menor (array)

Publicado por Kabuto (1381 intervenciones) el 26/12/2020 00:16:43
No veo donde inicializas mínima.
Si le vas a asignar el elemento 0 del array, se ha de inicializar DESPUÉS de pedir los datos.

Y el promedio no tiene sentido que se esté calculando dentro del bucle.
Cada vez que el bucle se repite, se borra lo que había calculado en promedio y se vuelve a recalcular.
Al final te dará buen resultado porque conservará el recálculo hecho en la última repetición, cuando la suma por fin tiene el valor necesario para poder hacer el promedio correctamente, pero es innecesario que se repita una y otra vez dentro del bucle.

Es más correcto calcular el promedio cuando el bucle que hace la suma de facturaciones, ya ha finalizado.

Te dejo este código tal y como yo lo haría:

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
public class Facturacion {
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		double[] facturacion = new double[6];
 
		//Pedimos datos
		for (int i = 0; i < facturacion.length; i++) {
			System.out.print("Mes "+ (i+1) +" = ");
			facturacion[i] = Double.parseDouble(teclado.next());
		}
 
		//Hacemos computos
		double maxima = 0;
		double minima = facturacion[0]; //Aquí facturacion[] ya tiene valores en su elementos
		double sumaTotal = 0;
		for (int i = 0; i < facturacion.length; i++) {
			//Acumulamos suma para calcular promedio posteriomente
			sumaTotal += facturacion[i];
			//Buscamos mínimo
			if (facturacion[i] < minima)
				minima = facturacion[i];
			//Buscamos máximo
			if (facturacion[i] > maxima)
				maxima = facturacion[i];
		}
		//Promedio se calcula cuando hemos completado la suma total
		double promedio = sumaTotal/facturacion.length;
 
		//Resultados
		System.out.println();
		System.out.println("Facturacion Total = "+ sumaTotal);
		System.out.println("Promedio de Facturacion = "+ promedio);
		System.out.println("Maxima Facturacion = " + maxima);
		System.out.println("Minima Facturacion = " + minima);
		teclado.close();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

problemas cuando el código pide saber el valor menor (array)

Publicado por Gabriel (3 intervenciones) el 27/12/2020 18:46:45
Totalmente de acuerdo con vos, era innecesario e incorrecto inicializar la variable mínima en ese momento ya que no tenia valor y estaba en 0, así nunca iba a cambiar la variable por que 0 es menor a todos los valores positivos que se pudieran colocar. Un millón de gracias!
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