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.
you can make caller of start function send in object work , example -
public void commonstarter(animal animal) { ... // logic on animal. }
or can send in parameter
starter
function determine whether createelk
orfox
, , 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
Post a Comment