Я довольно новичок в программировании на Java, и хотя я знаю основы, я чувствую, что мой код очень длинный и ненужный. Мне интересно, есть ли способ объединить мои методы elkStarter()
и foxStarter()
в один метод starter()
, чтобы я мог уменьшить свой код.Как я могу объединить два метода, которые делают то же самое, но отличаются по типу?
//Opening question, askes user to pick either an elk or fox
public void systemStart(){
for(int i =0;i<=100;i++){
System.out.println("- - - - - - - - - - - - - - - - - -\n");
}
System.out.println("***STARTING NEW MOVEMENT MODEL***\n"+"-----------------------------------\n");
iteration = 0;
String animalType = JOptionPane.showInputDialog
("Would you like an elk or a 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 to when "elk" is selected as the animal type.
public void elkStarter(){
Elk elk_1 = new Elk();
elk_1.namer("elk_1");
System.out.println("You have just created an Elk called " + elk_1.name + ".\n" +
"It has begun its life at (0,-0).");
elk_1.findPosition();
JOptionPane.showMessageDialog (null, "Lets let our new elk roam a 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) to 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! Thanks for trying my model!");
loop=1;
break;
default: JOptionPane.showMessageDialog (null, "ummmm sorry that wasn't a direction...Please try again.");
break;
}
}
}
//systemStater goes to when "fox" is selected as the animal type.
public void foxStarter(){
Fox fox_1 = new Fox();
fox_1.namer("fox_1");
System.out.println("You have just created an Fox called " + fox_1.name + ".\n" +
"It has begun its life at (0,-0).");
fox_1.findPosition();
JOptionPane.showMessageDialog (null, "Lets let our new fox roam a 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) to 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! Thanks for trying my model!");
loop=1;
break;
default: JOptionPane.showMessageDialog (null, "ummmm sorry that wasn't a direction...Please try again.");
break;
}
}
}
Второй вариант работал очень хорошо! За исключением того, что мне нужно было поставить «новый» перед Elk() и Fox(), когда они устанавливали животное, равное им. – MooseMan55
Да, извините, забыл это :), исправил ответ, спасибо. –
Я считаю, что основной вопрос вопроса остается нерешенным. – MaxZoom