java - Overriding methods and threads -


iam having bit of problem question have been asked complete following class.

public class updowntrack extends opentrack {     //alloweddirection attribute required     private traindirection alloweddir;      //add constructor set initial state down     public updowntrack()     {         alloweddir = down;     }      //override usetrack method 1 train @ time      //can use track     public synchronized void usetrack(traindirection traindir, int id)     {         try        {          entertrack(traindir,  id);          traverse();          exittrack(traindir,id);        }        catch(exception e)        {          system.out.println("error" + e);          }       }       // override entertrack method so,a train going in opposite     // direction allowed enter track     //then display train has entered track     public synchronized void entertrack(traindirection traindir, int id)     {        if(alloweddir != traindir)        {          try          {             system.out.println("train " + id + " entered track, going " + traindir);          }          catch (exception e)          {             system.out.println(e);          }        }       }      //override exittrack method direction changed     //before track exited     //then display train has exited track     public synchronized void exittrack(traindirection traindir, int id)     {              system.out.println("   train " + id + " left track, going " + traindir);          traindir = (traindir == down)? down : up;           notifyall();     }   } 

methods overide opentrack class

    public void usetrack(traindirection traindir, int id)     {           entertrack(traindir,  id);          traverse();          exittrack(traindir,id);     }      //this method doesn't check if safe traverse track.     //it reports train has entered track.     void entertrack(traindirection traindir, int id)     {         system.out.println("train " + id + " entered track, going " + traindir);     }      //this method reports train has left track     void exittrack(traindirection traindir, int id)     {         system.out.println("   train " + id + " left track, going " + traindir);     }      } 

problem im getting wrong output, should get

train 1 enters track going train 1 leaves track train 3 enters track going down train 3 leaves track train 2 enters track going 

and on, im getting sequence , jumbled output

traindirection class of yours , when concatenate instance of string (such here: system.out.println(" train " + id + " left track, going " + traindir);), calls tostring method of class. default tostring(), inherited object returns object hashcode , not actual direction. need override public string tostring() method in class traindirection return useful information (such direction of train...)


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -