Java - Arreglos. Ordenar Numeros de mayor a menos y viceversa.

   
Vista:

Arreglos. Ordenar Numeros de mayor a menos y viceversa.

Publicado por Adrian (9 intervenciones) el 26/09/2014 04:18:11
Que tal amigos. En uno de mis trabajos me han encargado un programa en donde el usuario debe ingresar numeros, los cuales al final deben aparecer de mayor a menor y de menos a mayor. Utilice arreglos. Mi problema es que no me muestra en pantalla acomodados de mayor a menor, ¿que esta mal en mi codigo? ¿debo corregir algo?

import java.util.Scanner;

class Numero{
public int[] num;
int j;
int aux;
int i;

public Numero(int[]s){
num = new int[s.length];
for(int n=0; n < s.length; n++){
num[n] = s[n];
}
}

public void obtenerDatos(){
Scanner leer = new Scanner(System.in);

System.out.print("Introduzca el total de numeros que desea ingresar: ");
int totNum = leer.nextInt();

int[] num = new int[totNum];

System.out.println("Introduzca " + totNum + " numero(s): ");

for(int i = 0; i < num.length; i++){
System.out.print("Numero " + (i+1) + ": ");
num[i] = leer.nextInt();
}
System.out.println("\nLos numeros ingresados son: ");
for(int i = 0; 1 < num.length; i++){
System.out.println(num[i]);
}
}

public void mayorMenor(){
for(int i = 0; i < num.length; i++){
for(j=i+1; j < num.length; j++){
if(num[i] < num[j]){
aux = num[i];
num[i] = num[j];
num[j] = aux;
}
}
}
}

public String toString(){
return "Numero de mayor a menor: " + num[j];
}
}
___________________________________________________________________________

class AplicacionNumero{
public static void main(String[]args){
Numero a = new Numero();
a.obtenerDatos();
a.mayorMenor();
System.out.println(a.toString());
}
}

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Nacho

Arreglos. Ordenar Numeros de mayor a menos y viceversa.

Publicado por Nacho (27 intervenciones) el 28/09/2014 07:45:53
Aun no veo tu código, pero desde un principio me doy cuenta de que no existe el constructor Numero()

En segunda, porque no hiciste todo junto? y lo dividiste en dos clases, la verdad es que no es necesario (a menos claro de que exista mas código de que el que pusiste)

En que tipo de trabajo te piden algo como esto? xD!, yo lo quiero u.u

Y ahora me fijo que no usaste el atributo "i" de la clase Numero, aparte de que es mala costumbre dejar esos atributos como friendly(defaul, no tiene encapsulamiento escrito), y el otro como publico, hay alguna razón por la cual sea así?

Ahora lo veo bien... ya vuelvo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nacho

Arreglos. Ordenar Numeros de mayor a menos y viceversa.

Publicado por Nacho (27 intervenciones) el 28/09/2014 08:01:00
Obtener datos no sirve de nada, solo pides los datos y lo guardas en una variable local del metodo, si lo que quieres es guardarla en num de la clase, entonces tendrás que poner this.num, no num a secas.

(el constructor que recibe un int[]... te recomiendo que tenga el nombre num, y luego mas abajo solo pongas:
this.num = num;)

Escoge utilizaras el método para llegar num, o utilizaras el constructor

En cuanto tu metodo que ordena...
Veo que intentas utilizar el metodo burbuja, no? (se que es basico, y no se porque no le he dado tiempo de estudio a estos algoritmos), pero la forma original, al menos como la vi en internet, no es asi:

public static void burbuja(int [] A){
int i, j, aux;
for(i=0;i<A.length-1;i++)
for(j=0;j<A.length-i-1;j++)
if(A[j+1]<A[j]){
aux=A[j+1];
A[j+1]=A[j];
A[j]=aux;
}
}

???????
pues nada, suerte con tu código tiene muchas cosas "malas", arreglalo.
Nos vemos, dime si te ayudo, sigue practicando!! :P
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Arreglos. Ordenar Numeros de mayor a menos y viceversa.

Publicado por Carlos cgprognet@hotmail.com (39 intervenciones) el 29/09/2014 03:21:46
Este seria el codigo usando un solo modulo,...puedes descomponerlo....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void obtenerDatos(){
Scanner leer = new Scanner(System.in);
System.out.print("Introduzca el total de numeros que desea ingresar: ");
int totNum = leer.nextInt();
int[] num = new int[totNum];
System.out.println("Introduzca " + totNum + " numero(s): ");
for(int i = 0; i < num.length; i++){
System.out.print("Numero " + (i+1) + ": ");
num[i] = leer.nextInt();
}
System.out.println("\nLos numeros ingresados SIN ORDENAR son: ");
for(int i = 0; 1 < num.length; i++){
System.out.println(num[i]);
}
//////////////////////////////
Arrays.sort(num);
////////////////////////////
System.out.println("\nLos numeros ingresados ORDENADOS ASCENDENTEMENTE son: ");
for(int i = 0; i < num.length; i++){
System.out.println(num[i]);
}
 
System.out.println("\nLos numeros ingresados ORDENADOS  DESCENDENTEMENTE son: ");
for(int i =num.length-1; i>=0; i--){
System.out.println(num[i]);
}
}

Para que tanto bucles, si java ya lo tiene incorporado el ordenamiento en ARRAYS.SORT()

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar