Results 1 to 6 of 6

Thread: Sorting Problem (Urgent)

  1. #1

    Thread Starter
    Addicted Member Ramandeep's Avatar
    Join Date
    Feb 2000
    Posts
    158
    Hi, I've just written a sort method for my top ten songs chart program, which just hold a list of the top ten songs.

    Each records is made up off the following fields:

    Chart Position :int
    Song Title :string
    Song Artist :string
    Record Company :string
    Price :double

    The method sorts records by Chart Position fine, but when I try to sort by Song Artist and re compile it gives me a error like the following error:

    "cannot apply > to string" or somthing.

    How can I compaire the strings to see which is greater, I want to sort Song Artist alphabeticly.
    Here is how I'm sorting by Chart Position (I'm using bubble sort as you cannot have more than 10 records).

    Code:
    passes = 1;
    			swap = true;
    			
    			while ( ( passes <= arrayToSort.length - 1 ) && ( swap = true ) )
    			{
    			    i = 0;
    			    swap = false;
    
    			    while ( i <= arrayToSort.length - 2 )
    			    {
    			        if ( arrayToSort[i].chartPosistion > arrayToSort[i + 1].chartPosistion )
    			        {
    				    tempRecord.chartPosistion = arrayToSort[i].chartPosistion;
    				    tempRecord.songTitle = arrayToSort[i].songTitle;
    				    tempRecord.songArtist = arrayToSort[i].songArtist;
    				    tempRecord.recordCompany = arrayToSort[i].recordCompany;
    				    tempRecord.price = arrayToSort[i].price;
    
    				    arrayToSort[i].chartPosistion = arrayToSort[i + 1].chartPosistion;
    				    arrayToSort[i].songTitle = arrayToSort[i + 1].songTitle;
    				    arrayToSort[i].songArtist = arrayToSort[i + 1].songArtist;
    				    arrayToSort[i].recordCompany = arrayToSort[i + 1].recordCompany;
    				    arrayToSort[i].price = arrayToSort[i + 1].price;
    
    				    arrayToSort[i + 1].chartPosistion = tempRecord.chartPosistion;
    				    arrayToSort[i + 1].songTitle = tempRecord.songTitle;
    				    arrayToSort[i + 1].songArtist = tempRecord.songArtist;
    				    arrayToSort[i + 1].recordCompany = tempRecord.recordCompany;
    				    arrayToSort[i + 1].price = tempRecord.price;
    				    
    				    swap = true;
    			        }
    			        
    			        i = i + 1;
    			    }
    			    
    			    passes = passes + 1;
    			}
    To sort by Song Artist

    I did the same as above but changing the if from:

    Code:
    if ( arrayToSort[i].chartPosistion > arrayToSort[i + 1].chartPosistion )
    to:

    Code:
    if ( arrayToSort[i].songArtist > arrayToSort[i + 1].songArtist )

  2. #2
    Dazed Member
    Join Date
    Oct 1999
    Location
    Ridgefield Park, NJ
    Posts
    3,418
    Use the one of the various sort methods from
    java.util.Arrays there are many and the one you
    probably need is

    public static void sort(Object[] a);

    Since Strings are objects in java i would
    assume that you can fill up an Object array
    with the song artists and apply this method to
    the array

  3. #3
    Dazed Member
    Join Date
    Oct 1999
    Location
    Ridgefield Park, NJ
    Posts
    3,418
    Im just curious.... it looks like you are storing
    the chart position's and the song Artist's in the same
    array. So is arrayto sort a string array? And are chart
    position and Song artist string types?

    You should also use a Vector "java.util.Vector; which
    is similar to a Collection in VB. This way you program
    wont be limited buy the amount of artists it can store.




    if ( arrayToSort[i].chartPosistion > arrayToSort[i + 1].chartPosistion )


    if ( arrayToSort[i].songArtist > arrayToSort[i + 1].songArtist )

  4. #4

    Thread Starter
    Addicted Member Ramandeep's Avatar
    Join Date
    Feb 2000
    Posts
    158
    Yes they are stored in the same array. The array elements are objects of class SongAccount that is defined as follows:
    Code:
    class SongAccount
    {
        int chartPosistion;
        
        String songTitle,
               songArtist,
               recordCompany;
        
        double price;
    }
    I'm mimicking the record effect that other languages usually provide; you know where you can define your own data type.

    About the vector thing, I could use it and I would in other circumstances but the assignment specification only say’s the program has to manage 10 song records.

  5. #5
    Dazed Member
    Join Date
    Oct 1999
    Location
    Ridgefield Park, NJ
    Posts
    3,418
    So i guess since your array is storing objects of your
    class you should be able to use the
    public static void sort(Object[] a); method. Try it
    out and tell us if it works

  6. #6

    Thread Starter
    Addicted Member Ramandeep's Avatar
    Join Date
    Feb 2000
    Posts
    158
    OK I just handed my coursework in yesterday and I completed the programs and it's working in tip top order.

    I also sorted out that sorting problem I had, I did the following

    Code:
    if ( arrayToSort[i].songArtist.compareTo ( arrayToSort[i + 1].songArtist ) > 0 )
    I didn't try that last suggestion you made Dilenger4 as I had worked the problem before I saw it, but I would like to thank you and the other guys for all the help, really appreciated.

    !!! THANKS GUYS !!!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width