Autor Tema: Problema con un arreglo  (Leído 4687 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Midnight

  • Sv Member
  • ***
  • Mensajes: 150
Problema con un arreglo
« : octubre 18, 2013, 02:06:23 pm »
Buenas tardes amigos sabios de la svc  :sur: :sur: :sur:

Pues tengo un problema con un arreglo en java la cuestion es la siguiente

le estoy ayudando a un vecino con una tarea que le han dejado la cual es que atravez del teclado se introduzcan n numeros de los cuales tiene q obtener el mayor, el menor y cuantos son pares.

la cosa esq yo le he estado ayudando  :yao_ming: (ya ni me acuerdo de java) y siempre nos da un Array Index Out Of Bounds Exception en la linea 41.

solo les pido que me hagan ver los errores en el codigo por favor

Código: [Seleccionar]
import java.util.Arrays;
import javax.swing.JOptionPane;

/**
 *
 *
 */
public class prueba {
   
    public static void main(String[] args) {
        // TODO code application logic here
               
        String numle, leer;
        double mayor=0, ejecutar, numero;
        Integer par=0,j=0, i=1, posicion=0;
       
    double []nuing;
    nuing = new double[j];
   
   
        numle = JOptionPane.showInputDialog("Ingrese la cantidad de numeros a ejecutar");
        ejecutar = Double.parseDouble(numle);
       
        while (i <= ejecutar) {
        //llenar el arreglo
        leer = JOptionPane.showInputDialog("Ingrese el numero" +i);
              numero = Double.parseDouble(leer);
             
              if (numero >= 0){
                 
           for (i=1; i<= ejecutar; i++){ 
                 
              for ( j = 0 ; j <= ejecutar ; j++){
                 
              nuing[j] = numero;
              j = j+1;
             
             }//for j
             
          }//for i   
                   
    }//if
              else if (numero < 0){
                  JOptionPane.showMessageDialog(null, "El numero ingresado es negativo\n por favor introduzca un numero positivo");
                  i = i-1;
                  j = j-1;
              }
        }
              // Recorrer el arreglo para determinar los numeros mayor,menor y pares
              //for (i=1; i<=ejecutar; i++);{   
        for ( j = 0 ; j < nuing.length ; j++){
           Arrays.sort(nuing);
               if (nuing[j] > mayor){
               mayor = nuing[j];
               posicion = j;}
                if (nuing[j]%2==0)
              par = par +1;
        }             
     
        JOptionPane.showMessageDialog(null, "el numero mayor es :" +nuing[0]+ "\n El menor es:" +posicion+ "\n y los pares son: " +par);

   //}//while   
}//public
}//class

Mi plan es vivir eternamente. Hasta ahora lo estoy cumpliendo perfectamente.

Experiencia es el nombre que damos a nuestras equivocaciones.

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Re:Problema con un arreglo
« Respuesta #1 : octubre 18, 2013, 04:50:27 pm »
Mira esto , tal vez te sirve:

Código: [Seleccionar]
public class Main {
public static int MaxNum(int... n) {
   int max_val = Integer.MIN_VALUE;
   for (int num : n) {
      if (num  > max_val  )max_val = num ;  
   }
   return max_val ;  
}
public static int MinNum(int... n) {
   int min_val = Integer.MAX_VALUE;
   for (int num : n) {
      if (num  < min_val )min_val = num ;  
   }
   return min_val ;  
}
public static int ParNum(int... n) {
   int c = 0;
   for (int num : n) {
if (num %2==0) c++;  
   }
   return c;  
}
    public static void main(String[] args) {
         System.out.println("Numero maximo::"+MaxNum(1,2,3,4,5,100,6));
         System.out.println("Numero minimo::"+MinNum(1,2,-1,3,4,5));
         System.out.println("Cantidad numero pares::"+ParNum(1,2,3,4,5,6,7,8,9,100));       
    }
}

Salida:
Código: [Seleccionar]
Numero maximo::100
Numero minimo::-1
Cantidad numero pares::5

Podes probarlo el codigo aca:
http://www.browxy.com/

Desconectado JaiMe

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 1485
  • λ | h+
Re:Problema con un arreglo
« Respuesta #2 : octubre 18, 2013, 05:43:06 pm »
Midnight veo que ocupas un Arrays.sort adentro del for loop donde iteras sobre todos los números para encontrar el mayor y menor... Por definición el Arrays.sort te ordena el arreglo y solo necesitarías el loop para encontrar los números pares. Una ves tenes los datos ordenados ascendentemente la posicion 0 del arreglo es el numero menor y el ultimo elemento el mayor:

Código: [Seleccionar]
int[] nums = new int[] {5,1,2,3,4,5,100,6};
Arrays.sort(nums);
System.out.println("Min " + nums[0]);                 // 1
System.out.println("Max " + nums[nums.length-1]);     // 100

Aun asi, para una tarea yo no usaria Arrays.sort por que el objetivo es implementar el algoritmo. Haria algo similar a lo que Edu_guerr, incluso seria mejor hacerlo todo en un solo loop. Tambien, evita mezclar logica con UI.

 
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Re:Problema con un arreglo
« Respuesta #3 : octubre 19, 2013, 12:33:22 pm »
Así como te dice JaiMe, Arrays.sort  puede ser otra solución, ahí depende de como tengas que resolverlo:
Código: [Seleccionar]
import java.util.Arrays;
public class Main {
    public static String AlgunaFuncion() {
    int c=0;
            int[] nums = new int[] {5,1,2,3,4,5,100,6};
Arrays.sort(nums);
for (int number: nums) {
if (number%2==0) c++;  
    }
    return "Min::" + nums[0]+",Max::"+nums[nums.length-1]+",Cantidad de pares::"+c;
}
    public static void main(String[] args) {
         System.out.println(AlgunaFuncion());     
    }
}

Código: [Seleccionar]
Min::1,Max::100,Cantidad de pares::4

Desconectado Midnight

  • Sv Member
  • ***
  • Mensajes: 150
Re:Problema con un arreglo
« Respuesta #4 : octubre 20, 2013, 12:17:59 am »
Muchisimas gracias por sus respuestas y pues al fin creo que mi vecino pudo solucionar el problema realmente necesito practicar y mas q eso quiza volver a aprender desde lo basico  :yao_ming: jajajajjaa

Muchas gracias por su tiempo y por sus respuestas me han servido mucho!!!!!!  :sur: :sur: :sur:
Mi plan es vivir eternamente. Hasta ahora lo estoy cumpliendo perfectamente.

Experiencia es el nombre que damos a nuestras equivocaciones.