Java - retornar numero mayor al promedio

 
Vista:
sin imagen de perfil

retornar numero mayor al promedio

Publicado por oscar (6 intervenciones) el 04/02/2017 18:04:25
Buenos dias, tengo un problema en el cual debo mostrar los numeros que sean mayor al promedio de un arreglo
por ejemplo: tengo un arreglo A con los valores= 0,5,10,15,20,30 entonces debe mostrarme los valores que sean mayores al promedio de ese arreglo. Mi codigo es el siguiente es usando funciones y un jframe

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import sun.security.util.Length;
 
public class JFrame01 extends javax.swing.JFrame {
 
    public JFrame01() {
        initComponents();
    }
    private int sumaArreglo(int B[]){
     int suma=0; int indMax=B.length-1;
      for(int i=0; i<=indMax; i++){
          suma=suma+B[i];
      }
      return suma;
    }
        private double promedioArreglo(int B[]){
     int suma=sumaArreglo(B);
     double promedio=suma*1.0/B.length;
      return promedio;
    }
    private int MayorPromedio(int B[]){
      int mayor=0;int indMax=B.length-1; int suma=sumaArreglo(B);
     double promedio=suma*1.0/B.length;
      for(int i=0; i<=indMax; i++){
         if(B[i]>promedio){
            mayor=B[i];
         }
      }
      return mayor;
      }
 
 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       int arreglo1[];
       arreglo1=new int[5];
       int arreglo2[]=new int[5];
       int arreglo3[]={1,2,3,4,7};
       arreglo1=llenaArreglo1(arreglo1);
       arreglo2=llenaArreglo2(arreglo2);
       String cadena=muestraArreglo(arreglo1);
       int result = MayorPromedio(arreglo1);
 
       jTextArea1.setText(cadena+"\n");
       jTextArea1.append("el mayor numero del arreglo es: "+MayorArreglo(arreglo1)+"\n");
       jTextArea1.append("el menor numero del arreglo es: "+MenorArreglo(arreglo1)+"\n");
       jTextArea1.append("Los numeros mayores al promedio del arreglo son: "+MayorPromedio(arreglo1)+"\n");
       jTextArea1.append("suma: "+sumaArreglo(arreglo1)+"\n");
       jTextArea1.append("promedio: "+promedioArreglo(arreglo1)+"\n");
 }
 
    public static void main(String args[]) {
 
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFrame01().setVisible(true);
            }
        });
    }
 
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration
}

a partir del siguiente código obtengo lo siguiente

imagen

por ejemplo: el promedio de los números del arreglo es 16, pero solo obtengo el numero 30. Debería mostrarme también el numero 20, espero me puedan ayudar a identificar en que estoy equivocandome
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
sin imagen de perfil
Val: 203
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

retornar numero mayor al promedio

Publicado por Jose Andres (27 intervenciones) el 04/02/2017 21:39:01
A lo que veo cuando imprimes
1
jTextArea1.append("Los numeros mayores al promedio del arreglo son: "+MayorPromedio(arreglo1)+"\n");
Estas retornando un solo valor del metodo, por lo tanto solo regresara el ultimo valor que encontro, en este caso, 20 y 30 se encuentran arriba del promedio, asi que primero obtiene 20, pero tambien 30 esta por arriba, entonces el 20 lo cambia por el 30.

1
2
3
4
5
6
7
8
9
10
private int MayorPromedio(int B[]){
      int mayor=0;int indMax=B.length-1; int suma=sumaArreglo(B);
     double promedio=suma*1.0/B.length;
      for(int i=0; i<=indMax; i++){
         if(B[i]>promedio){
            mayor=B[i];//aqui esta el error, solo puede devolver un numero.
         }
      }
      return mayor;
      }

para solucionarlo averiaras almacenarlos en un String

1
2
3
4
5
6
7
8
9
10
private String MayorPromedio(int B[]){
      String mayor="";int indMax=B.length-1; int suma=sumaArreglo(B);
     double promedio=suma*1.0/B.length;
      for(int i=0; i<=indMax; i++){
         if(B[i]>promedio){
            mayor=mayor+" "+String.valueOf(B[i]);
         }
      }
      return mayor;
      }
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