Foros del Web » Programación para mayores de 30 ;) » Java »

Problema ejecucion de programa de ordenamiento

Estas en el tema de Problema ejecucion de programa de ordenamiento en el foro de Java en Foros del Web. Que tal , soy nuevo en esto de java y tengo este problema con un codigo que lo que hace es pedir la cantidad de ...
  #1 (permalink)  
Antiguo 04/07/2015, 15:23
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Busqueda Problema ejecucion de programa de ordenamiento

Que tal , soy nuevo en esto de java y tengo este problema con un codigo que lo que hace es pedir la cantidad de valores dentro de un vector, luego ingresas los valores, y al final te deberia salir ordenados los valores dentro del vector, tengo este error al ejecutar y no se cual es el problema
Les dejo el codigo:
package menor;
import java.util.Arrays;
import java.util.Scanner;

public class Menor {
int n=0;
private int[] numeros;
private Scanner teclado;


public void cargar() {
int length = 0;

teclado=new Scanner(System.in);

System.out.print ("El tamaño de la Serie: ");



length = Integer.parseInt(teclado.nextLine());
numeros=new int[length];
long[] numeros = new long[length];

for(int f=0;f<numeros.length;f++) {
System.out.print("Ingrese el sueldo:");
numeros[f]=teclado.nextInt();
}
}

public void ordenar() {
for(int k=0;k<4;k++) {
for(int f=0;f<4-k;f++) {
48 if (numeros[f]>numeros[f+1]) {
int aux;
aux=numeros[f];
numeros[f]=numeros[f+1];
numeros[f+1]=aux;
}
}
}}

public void imprimir() {
System.out.println("ordenados de menor a mayor.");
for(int f=0;f<numeros.length;f++) {
System.out.println(numeros[f]);
System.out.print(Arrays.toString(numeros));
}
}

public static void main(String[] args) {
Menor pv=new Menor();
pv.cargar();
68 pv.ordenar();
pv.imprimir();
}}

Y ahora el Error

run:
El tamaño de la Serie: 3
Ingrese el sueldo:5
Ingrese el sueldo:9
Ingrese el sueldo:8
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at menor.Menor.ordenar(Menor.java:48)
at menor.Menor.main(Menor.java:68)
Java Result: 1

Las lineas a las que se refiere las señalo arriba.
Si me pudieran ayudar se los agradeceria
  #2 (permalink)  
Antiguo 04/07/2015, 16:50
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Problema ejecucion de programa de ordenamiento

Si estás metiendo los valores en un array de tres posiciones, ¿por qué pides en el bucle hasta la quinta posición?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 04/07/2015, 17:06
 
Fecha de Ingreso: julio-2015
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Problema ejecucion de programa de ordenamiento

ya veo , no es de 3 valores , sino n valores .. entonces solo tendria que modificarl y cambiar 4 por n?
  #4 (permalink)  
Antiguo 08/07/2015, 07:12
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 1 mes
Puntos: 7
Respuesta: Problema ejecucion de programa de ordenamiento

Hablas de un vector, pero no usas ningún vector. Por cierto, usar vectores a estas alturas es posible, pero te recomendaría otra estructura de datos, digamos un ArrayList o un LinkedList.

No obstante, tu algoritmo de ordenación por burbuja está mal. El algoritmo correcto es de esta forma:

Código PHP:
for (int k 0numeros.length 1k++)
    for (
int f k+1numeros.lengthf++) 
        if (
numeros[k]>numeros[f]){
            
int aux numeros[k];
            
numeros[k] = numeros[f];
            
numeros[f] = aux;
        } 
He usado tus mismas variables, pero igual hay otra manera más sencilla de ordenar, teniendo en cuenta que estás hablando de un arreglo de números enteros (los int son primitivos) y no de objetos (en cuyo caso deberías redefinir el método compareTo de la interfaz Comparable) puedes usar directamente el método sort de la clase Arrays. Sería esto:

Código PHP:
Arrays.sort(numeros); 
Este método retorna void, por lo que no tienes que hacer nada más que eso.
__________________
El último TipdaR

Etiquetas: ordenamiento, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:44.