# Help with sort ascending and descending

Printable View

• 08-16-2011, 03:46 PM
Freeze69
Help with sort ascending and descending
Can someone please help me with my code.. im kinda stuck in ascending and descending.. here is my code hope you can understand it.. it just need a little of your magic trick so it could arrange the numbers correctly! Thanks in advance! :(happy):

Code:

```import java.io.*; public class Sorting {     public static void main(String[]args)throws IOException{         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));         int [] x;         x = new int [10];         int y;                 try{             System.out.println("Please enter 10 numbers: ");             x[0]=Integer.parseInt(br.readLine());             x[1]=Integer.parseInt(br.readLine());             x[2]=Integer.parseInt(br.readLine());             x[3]=Integer.parseInt(br.readLine());             x[4]=Integer.parseInt(br.readLine());             x[5]=Integer.parseInt(br.readLine());             x[6]=Integer.parseInt(br.readLine());             x[7]=Integer.parseInt(br.readLine());             x[8]=Integer.parseInt(br.readLine());             x[9]=Integer.parseInt(br.readLine());                         System.out.println("Your numbers are: "+x[0]+" "+x[1]+" "+x[2]+" "+x[3]+" "+x[4]+" "+x[5]+" "+x[6]+" "+x[7]+" "+x[8]+" "+x[9]);             System.out.println("[1] Sort ascending");             System.out.println("[2] Sort descending");             System.out.println("Choose what type of sort: ");             y=Integer.parseInt(br.readLine());             int j=0,i=0, value = 0, n= x.length;           try{               if (y==1){                     for(i = 1; i<n;i++){                       value = x[i];                       j=i;                     while((j>0)&&(x[j-1]>value)){                       x[i] = x [j=1];                       j = j-1;               }                                 x[j] = value;                     System.out.println("In ascending order");                     for(i=0; i<n; i++)                     System.out.println(x[i]+" ");                           }               }else if(y==2){                     for(i = 1; i>n;i++){                     value = x[i];                     j=i;                 while((j>0)&&(x[j-1]>value)){                     x[i] = x [j=1];                     j = j-1;                         }                 x[j] = value;                 System.out.println("In descending order");                 for(i=0; i>n; i++)                 System.out.println(x[i]+" ");               }                           }else{                   System.out.println("Error! choices are 1 and 2 only");               }           }catch(NumberFormatException nfe){               System.out.println("Invalid Input! Please try again");           }         }catch(NumberFormatException nfe){             System.out.println("Invalid Input! Please try again");         }     }     }```
• 08-16-2011, 04:52 PM
Tolls
Please use code tags when posting code (use the # button in the message toolbar).
Unformatted code is hard to follow.

Also, what is your problem?
You haven't actually said...
• 08-16-2011, 05:30 PM
eRaaaa
Quote:

it just need a little of your magic trick so it could arrange the numbers correctly
Integer[] x = new Integer[10];
....
if (y == 1) {
Arrays.sort(x);
} else if (y == 2) {
Arrays.sort(x , Collections.reverseOrder());
}

:P:
• 08-16-2011, 05:39 PM
Freeze69
sorry mate. .its my first time posting a thread here in java-forums.. anyway my problem is here..

Code:

```int j=0,i=0, value = 0, n= x.length;           try{               if (y==1){                     for(i = 1; i<n;i++){                       value = x[i];                       j=i;                     while((j>0)&&(x[j-1]>value)){                       x[i] = x [j=1];                       j = j-1;               }                                 x[j] = value;                     System.out.println("In ascending order");                     for(i=0; i<n; i++)                     System.out.println(x[i]+" ");                           }               }else if(y==2){                     for(i = 1; i>n;i++){                     value = x[i];                     j=i;                 while((j>0)&&(x[j-1]>value)){                     x[i] = x [j=1];                     j = j-1;                         }                 x[j] = value;                 System.out.println("In descending order");                 for(i=0; i>n; i++)                 System.out.println(x[i]+" ");               }                           }else{                   System.out.println("Error! choices are 1 and 2 only");               }```
my code is that the user will give 10 numbers then he'll choose if he like to arrange it by ascending and descending order..
as you can see.. its in disorder but it runs smoothly.. Im stuck in this part right here and i don't have a clue to what ill do next, i think my problem is in the computation cause it wont arrange the 10 numbers in ascending and descending order..
• 08-16-2011, 05:50 PM
Freeze69
Quote:

Originally Posted by eRaaaa
Integer[] x = new Integer[10];
....
if (y == 1) {
Arrays.sort(x);
} else if (y == 2) {
Arrays.sort(x , Collections.reverseOrder());
}

:P:

dude.. i already know that.. we do it the hard way.. thanks anyway :)-:
• 08-16-2011, 05:58 PM
eRaaaa
Then read Sorting algorithm - Wikipedia, the free encyclopedia, choose an algorithm, read, code, ask quations again :D
• 08-16-2011, 06:26 PM
Norm
Or you could try debugging your code to see where the problem is. Add printlns to show the values of variables at the point where you are making decisions and changing the order of the numbers in the array.

Some suggestions for easier debugging:
Hard code the numbers in an array instead of asking a user to enter them:
int[] x = {3,5,1,7,22,6}; // define the numbers to sort