Essentially, I've put a switch statement in a for loop. It has not been working as intended. I think it has something to with the break statement.
What I want the loop to do is go to the first element in the array list, execute code based on the 'action' String, then go to the next until the list ends. However, it seems that whenever I run the program it only executes the code in the first index. Here is some code for the BattleManager class:
Scanner input = new Scanner(System.in);
String cmd;
String[] dtct;
Arraylist<BattleAction> turns = new ArrayList<BattleAction>();
public void handle() {
cmd = input.nextLine();
dtct = (cmd.split());
switch(dtct[0]) {
case "attack":
turns.add(new BattleAction("playerattack"));
getenemyaction();
turnsequence();
break;
case "defend":
getenemyaction();
turnsequence()
}
}
public void getenemyaction() {
turns.add(new BattleAction("enemyattack"));
}
public void turnsequence() {
Collections.sort(turns);
print("Size: " + turns.size())
for (int i = 0; i != turns.size(); i ++) {
switch(turns.get(i).action) {
case "playerattack":
playerattack();
break;
case "enemyattack":
enemyattack();
break;
}
}
}
public void playerattack() {
print("Player attack");
}
public void enemyattack() {
print("Enemy attack");
}
When I run the program here is the output I am getting with the attack command:
attack
Size: 2
Player Attack
However when I use the defend command the output is:
defend
Size: 1
Enemy Attack
The desired output would be for turnsequence() to go through turns and do check action for the desired code to be executed, like this:
attack
Size: 2
Player Attack
Enemy Attack
I have done my best to cut out as much unnecessary information at possible to prevent confusion. Thank you so much for reading my post! I really appreciate your help!