need help with sorting an string array alphabetically


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 2 of 2

Thread: need help with sorting an string array alphabetically

  1. #1
    Join Date
    Feb 2003
    Posts
    11

    Question need help with sorting an string array alphabetically

    I can't seem to get this program to sort. Not sure why. Can anyone see a problem with my bubble sort?
    thanks.


    Code:
    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    
    
    public class Assignment8b extends Applet implements ActionListener
    {	
    	private Button add, display, sort;
    	private TextField input;
    	private int j;
    	private String [] stringArray = new String [10];
    	private boolean clickedYet = false;
    	private boolean displayNow = false;
    	
    	public void init()
    	{
    		//add button
    		add = new Button ("Add");
    		add(add);
    		add.addActionListener(this);
    		
    		//display button
    		display = new Button ("Display");
    		add(display);
    		display.addActionListener(this);
    		
    		//search button
    		sort = new Button ("Sort");
    		add(sort);
    		sort.addActionListener(this);
    		
    		//input textField
    		input = new TextField (20);
    		add (input);
    		input.addActionListener (this);				
    	}
    
    	public void paint(Graphics g){
    			
    			g.drawString ("Array output below",50,75);
    			g.drawLine (50,80,150,80);
    			
    			if (displayNow)
    				display (stringArray, g);
    		
    			}
    	
    	public void actionPerformed (ActionEvent event)
    	{	
    		clickedYet = true;
    		
    		if (clickedYet){
    	
    			if (event.getSource() == add)
    				addData (stringArray);
    				
    			if (event.getSource() == display)
    				displayNow = true;
    			
    			if (event.getSource() == sort)
    			  	sort (stringArray);
    			}
    				
    		input.setText(null);
    		
    		repaint ();
    		
    	}
    
    		
    // This section below contains the methods to carry out the tasks 1,2 and 3		
    	
    	public void addData (String [] array)
    	
    		{	array[j++] = input.getText();  }
    		
    	public void display(String [] array, Graphics g)  
    	{    
      			int yValue=110;    
      			
      			for (int w=0; w < array.length; w++)  
      			{    g.drawString("Index "+w+" is "+array[w], 70, yValue);      
      					yValue +=20;    }  
      	}
      	
       
      	//bubble sort
    	public void sort(String [] array)
       	{
       		String temp;
       		
       		for (int pass=0; pass < (array.length - 1); pass++)
       			for (int i=1; i < (array.length - pass); i++)
       				if (array[i].compareTo(array[i-1]) > 0)
       				{
       					temp = array [i];
       					array [i] = array [i - 1];
       					array [i-1] = temp;
       	
       				}
       			
       	}
      	   
      		
    	
    	
    } // end of program

    jbowl to the nineth degree

  2. #2
    Join Date
    Mar 2003
    Posts
    86

    Working code

    Here is the code with 2 fixes:
    1 - You have initiated the array to size 10, and the last 5 celld where null.
    2 - You have assumed the srting will return an algebra compareTo result.


    Shrabov.



    package mypackage1;

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;


    public class Assignment8b extends Applet implements ActionListener
    {
    private Button add, display, sort;
    private TextField input;
    private int j;
    private String [] stringArray = new String [5];
    private boolean clickedYet = false;
    private boolean displayNow = false;

    public void init()
    {
    //add button
    add = new Button ("Add");
    add(add);
    add.addActionListener(this);

    //display button
    display = new Button ("Display");
    add(display);
    display.addActionListener(this);

    //search button
    sort = new Button ("Sort");
    add(sort);
    sort.addActionListener(this);

    //input textField
    input = new TextField (20);
    add (input);
    input.addActionListener (this);
    }

    public void paint(Graphics g){

    g.drawString ("Array output below",50,75);
    g.drawLine (50,80,150,80);

    if (displayNow)
    display (stringArray, g);

    }

    public void actionPerformed (ActionEvent event)
    {
    clickedYet = true;

    if (clickedYet){

    if (event.getSource() == add)
    addData (stringArray);

    if (event.getSource() == display)
    displayNow = true;

    if (event.getSource() == sort)
    sort (stringArray);
    }

    input.setText(null);

    repaint ();

    }


    // This section below contains the methods to carry out the tasks 1,2 and 3

    public void addData (String [] array)

    { array[j++] = input.getText(); }

    public void display(String [] array, Graphics g)
    {
    int yValue=110;

    for (int w=0; w < array.length; w++)
    { g.drawString("Index "+w+" is "+array[w], 70, yValue);
    yValue +=20; }
    }


    //bubble sort
    public void sort(String [] array)
    {
    Integer temp;

    Integer[] iArray = new Integer[5];

    for (int i = 0; i < array.length ; i++)
    {
    iArray[i] = Integer.valueOf(array[i]);
    }


    for (int pass=0; pass < (array.length - 1); pass++)
    {
    for (int i=1; i < (array.length - pass); i++)
    {
    if (iArray[i].compareTo(iArray[i-1]) > 0)
    {
    temp = iArray[i];
    iArray[i] = iArray[i-1];
    iArray[i-1] = temp;

    }
    }
    }

    for (int i = 0; i < array.length ; i++)
    {
    array[i] = iArray[i].toString();
    }

    }




    } // end of program

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center