Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: angel1232 en 05 de Diciembre 2018, 03:37

Título: Programa ordenar arrays arreglos numéricos en Java ordenación separada y mezcla
Publicado por: angel1232 en 05 de Diciembre 2018, 03:37
Hola, estoy tratando de desarrollar un programa Java que ordene dos arrays (formaciones) primero por separados y luego juntos. Quiero que me acomode pero al momento de imprimirlo me sale acomodado pero me sale este error como le hago

este es mi código:

Código: [Seleccionar]
package javaapplication14;

import java.util.Scanner;
import javax.swing.JOptionPane;

public class JavaApplication14 {

    public static void main(String[] args) {
    Scanner lec=new Scanner(System.in);

        int aux,arrelo[],elem,elem1;
       
        elem = Integer.parseInt(JOptionPane.showInputDialog("digte el numero"));
        int[] arreglo = new int [elem];
       
    for(int i=0;i<elem;i++){
        System.out.println((i+1)+".-introdusca el numero");
        arreglo[i]=lec.nextInt();
   
    }
   
    for(int i=0;i<(elem-1);i++){
        for(int j=0;j<(elem-1);j++){
        if(arreglo[j]>arreglo[j+1]){
             aux = arreglo[j];
             arreglo[j]=arreglo[j+1];
             arreglo[j+1] =aux;
       
        }
       
        }

    }
    elem1 = Integer.parseInt(JOptionPane.showInputDialog("digte el numero"));
        int[] arreg = new int [elem1];
       
    for(int i=0;i<elem1;i++){
        System.out.println((i+1)+".-introdusca el numero");
        arreg[i]=lec.nextInt();
   
    }
   
    for(int i=0;i<(elem1-1);i++){
        for(int j=0;j<(elem1-1);j++){
        if(arreg[j]>arreg[j+1]){
             aux = arreg[j];
             arreg[j]=arreg[j+1];
             arreg[j+1] =aux;
   
        }
        }
    } 
        System.out.println("numeros ordenados");
        for(int i=0;i<elem+elem1;i++){
            if(arreg[i]<=arreglo[i]){
            System.out.println(arreg[i]+"");
            System.out.println(arreglo[i]+"");       
        }
        }
        }         
    }
Título: Re: Ordenar arrays arreglos numéricos en Java ordenación separada y mezcla de se
Publicado por: paramonso en 04 de Enero 2019, 19:42
Hola Angel1232. Por lo que veo yo en el codigo que has instanciado en los showInputDialog lo que pides es el numero de elementos para un arreglo.
Deberias de diferenciarlo a la hora de pedirlo asi: JOptionPane.showInputDialog("digite el numero de elementos del arreglo") ya que no se sabe para que se introduce ese numero.

Cuando dimensionas los arrays les das el valor de alem y elem1 despues en el for sumas elem+elem1.
El error que te da dentro del  for(int i=0;i<elem+elem1;i++)  es porque pides que i sea menor que elem+elem1.
Cuando entras en el for el array de elementos de menor valor te dara un error al llegar a su numero de elementos más uno.

Si elem= 3 y elem1=2 , i=5 por lo tanto cuando llege a 2 te saltará el error.
Un saludo. ;)
Título: Re: Ordenar arrays arreglos numéricos en Java ordenación separada y mezcla de se
Publicado por: paramonso en 05 de Enero 2019, 10:38
Hola de nuevo Angel1232.

Al principio del código creas una variable que no se utiliza para nada int aux,  arrelo[] , elem, elem1;.

Este es el codigo de como lo haría yo:

Código: [Seleccionar]

import java.util.Scanner;
import javax.swing.JOptionPane;

public class JavaApplication14 {

    public static void main(String[] args) {
        Scanner lec=new Scanner(System.in);

        int aux,arreglo[],elem,elem1;

        elem = Integer.parseInt(JOptionPane.showInputDialog("Entre el numero de elementos para el primer array: "));
        arreglo = new int [elem];

        for(int i=0;i<elem;i++){
            System.out.println(".-Valor del elemento"+(i+1)+"del primer array");
            arreglo[i]=lec.nextInt();

        }

        for(int i=0;i<(elem-1);i++){
            for(int j=0;j<(elem-1);j++){
                if(arreglo[j]>arreglo[j+1]){
                    aux = arreglo[j];
                    arreglo[j]=arreglo[j+1];
                    arreglo[j+1] =aux;

                }

            }

        }
        elem1 = Integer.parseInt(JOptionPane.showInputDialog("Entre el numero de elementos para el segundo array: "));
        int[] arreg = new int [elem1];

        for(int i=0;i<elem1;i++){
            System.out.println((i+1)+".-Valor del elemento"+(i+1)+"del segundo array");
            arreg[i]=lec.nextInt();

        }

        for(int i=0;i<(elem1-1);i++){
            for(int j=0;j<(elem1-1);j++){
                if(arreg[j]>arreg[j+1]){
                    aux = arreg[j];
                    arreg[j]=arreg[j+1];
                    arreg[j+1] =aux;

                }
            }
        } 
/*Después de ordenar los dos arrays creo un nuevo array para introducir en él
los elementos de los dos arrays ordenados y vuelvo a ordenar este array para tener los tres arrays ordenados*/
        int ordenados[]= new int [elem+elem1];
        int z=0;
        System.out.print("numeros ordenados primer array\n");
        for(int i=0;i<arreglo.length;i++){
            ordenados[z]=arreglo[i];
            z++;
//presento en pantalla el primer array ordenado
             System.out.print(arreglo[i]+", ");
         
        }
        System.out.print("\nnumeros ordenados segundo array \n");
        for(int i=0;i<arreg.length;i++){
            ordenados[z]=arreg[i];
            z++;
//presento en pantalla el segundo array ordenado
             System.out.print(arreg[i]+", ");
        }
       
       
          for(int i=0;i<ordenados.length-1;i++){
            for(int j=0;j<ordenados.length-1;j++){
                if(ordenados[j]>ordenados[j+1]){
                    aux = ordenados[j];
                    ordenados[j]=ordenados[j+1];
                    ordenados[j+1] =aux;

                }
            }
        } 
            System.out.print("\nnumeros de los dos arrays ordenados\n");
         
         for(int i=0;i<ordenados.length;i++){
//Presento en pantalla el tercer array ordenado
              System.out.print(ordenados[i]+", ");
         
            }
       
    }         
}