Sv Community El Salvador

Soporte y Tecnología => Programación => Java => Mensaje iniciado por: Midnight en octubre 18, 2013, 02:06:23 pm

Título: Problema con un arreglo
Publicado por: Midnight en 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

Título: Re:Problema con un arreglo
Publicado por: edu_guerr en 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/ (http://www.browxy.com/)
Título: Re:Problema con un arreglo
Publicado por: JaiMe en 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.

 
Título: Re:Problema con un arreglo
Publicado por: edu_guerr en 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
Título: Re:Problema con un arreglo
Publicado por: Midnight en 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: