java - How can I combine two methods that do the same thing but differ in type? -


i new java programming , although know basics feel though code long , unnecessary. i'm wondering if there way combine elkstarter() , foxstarter() methods 1 starter() method can reduce code.

//opening question, askes user pick either elk or fox     public void systemstart(){         for(int =0;i<=100;i++){            system.out.println("- - - - - - - - - - - - - - - - - -\n");     }     system.out.println("***starting new movement model***\n"+"-----------------------------------\n");     iteration = 0;     string animaltype = joptionpane.showinputdialog                      ("would elk or fox?");      switch (animaltype.tolowercase()){         case "elk": elkstarter("elk_1");         break;         case "fox": foxtarter("fox_1");          break;         default: joptionpane.showmessagedialog (null, "you didn't enter elk or fox..please try again.");         runanothermodel();         break;     } }  //systemstater goes when "elk" selected animal type. public void elkstarter(){     elk elk_1 = new elk();     elk_1.namer("elk_1");     system.out.println("you have created elk called " + elk_1.name + ".\n" +     "it has begun life @ (0,-0).");             elk_1.findposition();      joptionpane.showmessagedialog (null, "lets let our new elk roam bit, shall we?");       int loop = 0;                      while(loop==0){         string animaldirection = joptionpane.showinputdialog                      ("which way should our elk move? (forward(f), backward(b), up(u), down(d)) or type stop(s) quit.");         switch(animaldirection.tolowercase()){             case "forward": case "f":             elk_1.walkforward();             elk_1.findposition();             break;             case "backward": case "b":             elk_1.walkbackward();             elk_1.findposition();             break;             case "up": case "u":             elk_1.walkup();                elk_1.findposition();             break;             case "down": case "d":             elk_1.walkdown();             elk_1.findposition();             break;             case "stop": case "s":             joptionpane.showmessagedialog (null, "goodbye! trying model!");             loop=1;             break;             default: joptionpane.showmessagedialog (null, "ummmm sorry wasn't direction...please try again.");             break;         }     } }  //systemstater goes when "fox" selected animal type. public void foxstarter(){     fox fox_1 = new fox();     fox_1.namer("fox_1");     system.out.println("you have created fox called " + fox_1.name + ".\n" +     "it has begun life @ (0,-0).");             fox_1.findposition();      joptionpane.showmessagedialog (null, "lets let our new fox roam bit, shall we?");       int loop = 0;                      while(loop==0){         string animaldirection = joptionpane.showinputdialog                      ("which way should our fox move? (forward(f), backward(b), up(u), down(d)) or type stop(s) quit.");         switch(animaldirection.tolowercase()){             case "forward": case "f":             fox_1.walkforward();             fox_1.findposition();             break;             case "backward": case "b":             fox_1.walkbackward();             fox_1.findposition();             break;             case "up": case "u":             fox_1.walkup();                fox_1.findposition();             break;             case "down": case "d":             fox_1.walkdown();             fox_1.findposition();             break;             case "stop": case "s":             joptionpane.showmessagedialog (null, "goodbye! trying model!");             loop=1;             break;             default: joptionpane.showmessagedialog (null, "ummmm sorry wasn't direction...please try again.");             break;         }     } } 

if classes elk , fox have same parent class ,example - animal , believe there multiple ways make 2 starter functions single one.

  1. you can make caller of start function send in object work , example -

    public void commonstarter(animal animal) {     ... // logic on animal. } 
  2. or can send in parameter starter function determine whether create elk or fox , , based on that, create correct 1 in class -

    public void commonstarter(boolean iselk) {     animal animal = none;     if(iselk) {         animal = new elk();     } else {         animal = new fox();     }     ... // logic. } 

Comments

Popular posts from this blog

OpenCV OpenCL: Convert Mat to Bitmap in JNI Layer for Android -

android - org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope -

python - How to remove the Xframe Options header in django? -