Autor Tema: Programa ordenar arrays arreglos numéricos en Java ordenación separada y mezcla  (Leído 2472 veces)

angel1232

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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]+"");       
        }
        }
        }         
    }
« Última modificación: 25 de Agosto 2019, 14:43 por Ogramar »

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
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. ;)
« Última modificación: 25 de Agosto 2019, 14:43 por Ogramar »

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
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]+", ");
         
            }
       
    }         
}
« Última modificación: 25 de Agosto 2019, 14:43 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".