“Hallar el mayor y menor número en un vector”. Al ejecutarlo me lee los números que le ingreso y luego sale error y no imprime el resultado

publicado por: Anonymous
/*
Hacer un programa que imprima el mayor y el menor de los elementos de un vector de longitud n
*/
package taller_arreglos_ejercicio1_logica;

import javax.swing.JOptionPane;
public class Taller_Arreglos_Ejercicio1_Logica {

    static int MayMen[];
    public static void main(String[] args) 
    {
        int n;
        n=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese la cantidad de elementos a ingresar"));
        MayMen=new int [n];
        LeerVec();
        Mayor();
    }

    public static void LeerVec(){
        for (int i=0; i<=MayMen.length; i++){
           MayMen[i]=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingrese el número "+i));

        }
       }

    public static void Mayor(){
        int i, May;
        May=MayMen[0];

        for (i=1; i<MayMen.length;i++){

           if (MayMen[i] >= May){
               May=MayMen[i];

           }  

        }
        JOptionPane.showMessageDialog(null, "Mayor: "+May);
    }

    public static void Menor(){
        int i, Men;
        Men=MayMen[0];
        for (i=1; i<MayMen.length; i++){
            if(MayMen[i] <= Men){
                Men=MayMen[i];
            }
        }
        JOptionPane.showMessageDialog(null, "Menor: "+Men);
    }

}

solución

Dentro del método LeerVec() (Java aconseja empezar el nombre de los métodos en minúscula), el bucle for cuenta desde 0 hasta MayMen.length. Por lo tanto, sobre pasa en 1 el límite y cuando intenta apuntar a una posición más alta del array, te devuelve un error:

java.lang.ArrayIndexOutOfBoundsException

Intenta reescribirlo así:

for (int i=0; i<MayMen.length; i++){
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *