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
-
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:
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]+"");
}
}
}
}
-
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. ;)
-
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:
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]+", ");
}
}
}