edit: I solved it. The problem was that I was trying to clear the previous value held in the scanner in the wrong spot (needed it outside the if statements). I also cleaned up the continueInput method with a switch variable. I'll post the correct version as an answer.

I'm trying to create objects with a loop and then store them in an arraylist that I'll later print to file. I can create the first object just fine, but on the second iteration through the loop I can't move past entering the cartoon name. I get the prompt for the name, but nothing happens no matter what I enter. 

Here's my main class:

```
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
enum CartoonType{FOX,CHICKEN,RABBIT,MOUSE,DOG,CAT,BIRD,FISH,DUCK,RAT,NULL};

public class Main {

public static void main(String[] args) {
    Scanner stdin = new Scanner(System.in);
    ArrayList<CartoonStar> cartoonStars = new ArrayList<CartoonStar>();
    String cartoonName;
    CartoonType cartoonType;
    String cartoonTypeString;
    int popularityIndex;
    boolean moreInput;
    int counter = 0;
    do {
        cartoonName = cartoonName(stdin);
        cartoonType = cartoonType(stdin);
        cartoonTypeString = cartoonType.toString();
        popularityIndex = popularityNumber(stdin);
        cartoonStars.add(new CartoonStar(cartoonName, cartoonType, popularityIndex));
        cartoonStars.get(counter).setName(cartoonName);
        cartoonStars.get(counter).setType(cartoonType);
        cartoonStars.get(counter).setPopularityIndex(popularityIndex);
        moreInput = continueInput(stdin);
        if (moreInput) {
            counter++;
        }
    } while (moreInput);
}

public static String cartoonName(Scanner stdin) {
    String name;
    String name1;
    int a = 1;
    System.out.print("Please enter the name of the cartoon character: ");
    name = stdin.nextLine();
    do {
        name1 = name;
        for (int i = 0; i < name.length(); i++) {
            if (!Character.isLetter(name.charAt(i))) {
                System.out.println("Please ensure you've entered the correct name. Re-enter the name or enter 'continue' to proceed: ");
                name = stdin.nextLine();
                if (name.equalsIgnoreCase("continue")) {
                    a = 0;
                    name = name1;
                } else {
                    a = 1;
                }
            } else {
                a = 0;
            }
        }
    } while (a == 1);
    return name;
} // end of cartoonName method

public static CartoonType cartoonType(Scanner stdin) {
    int cartoonType = 0;
    CartoonType cType = CartoonType.valueOf("NULL");
    int a;
    do {
        try {
            System.out.print("Please enter a number corresponding to the type of cartoon character below.\n"
                    + "1 = FOX,2 = CHICKEN,3 = RABBIT,4 = MOUSE,5 = DOG,\n6 = CAT,7 = BIRD,8 = FISH,9 = DUCK,10 = RAT\n"
                    + "Please enter the type of cartoon character: ");
            cartoonType = stdin.nextInt();
            while (cartoonType < 1 || cartoonType > 10) {
                System.out.print("Sorry, please enter a number from 1 to 10. The corresponding types are:/n"
                        + "1 = FOX,2 = CHICKEN,3 = RABBIT,4 = MOUSE,5 = DOG,\n6 = CAT,7 = BIRD,8 = FISH,9 = DUCK,10 = RAT\n");
                cartoonType = stdin.nextInt();
            } 
            a = 0;
        } catch (InputMismatchException ex) {
            System.out.print("Sorry, please enter only integer values.");
            a = 1; 
            stdin.nextLine(); // drop last input
        }
    } while (a == 1);
    switch (cartoonType) {
        case 1:
            cType = CartoonType.valueOf("FOX");
            break;
        case 2:
            cType = CartoonType.valueOf("CHICKEN");
            break;
        case 3:
            cType = CartoonType.valueOf("RABBIT");
            break;
        case 4:
            cType = CartoonType.valueOf("MOUSE");
            break;
        case 5:
            cType = CartoonType.valueOf("DOG");
            break;
        case 6:
            cType = CartoonType.valueOf("CAT");
            break;
        case 7:
            cType = CartoonType.valueOf("BIRD");
            break;
        case 8:
            cType = CartoonType.valueOf("FISH");
            break;
        case 9:
            cType = CartoonType.valueOf("DUCK");
            break;
        case 10:
            cType = CartoonType.valueOf("RAT");
            break;
    }
    return cType;
} // end of cartoonType method

public static int popularityNumber(Scanner stdin) {
    int popNum = 0;
    int a;
    do {
        try {
            System.out.print("Please enter a cartoon popularity number from 1 to 10, with 10 being the highest: ");
            popNum = stdin.nextInt();
            while (popNum < 1 || popNum > 10) {
                System.out.print("Sorry, please enter a value from 1 to 10: ");
                popNum = stdin.nextInt();
            }
            a = 1;
        } catch (InputMismatchException ex) {
            a = 0;
            System.out.print("Sorry, please enter only integer values.");
            stdin.next();
        }
    } while (a == 0);
    return popNum;
} // end of popularityNumber method

public static boolean continueInput(Scanner stdin) {
    boolean moreInput = false;
    int a = 1;
    System.out.print("More input? Enter 'yes' for more input, or 'no' to quit: ");
    String input = stdin.next();
    do {
        for (int i = 0; i < input.length(); i++) {
            if (!Character.isLetter(input.charAt(i))) {
                System.out.println("Please enter only 'yes' or 'no'.");
                stdin.next();
                a = 1;
            } else if (input.equalsIgnoreCase("yes")) {
                a = 0;
                moreInput = true;
            } else if (input.equalsIgnoreCase("no")) {
                a = 0;
                moreInput = false;
            } else {
                a = 1;
                System.out.print("Please enter only 'yes' or 'no'.");
                stdin.next();
            }
        }
    } while (a == 1);
    return moreInput;
}

```

}

And here's my other class:

```
public class CartoonStar {

 private String name;   
 private CartoonType type;   //enum types
 private int popularityIndex;  //1 to 10 10 being the most popular

 public CartoonStar() {
 }//end no argument construtor

 public CartoonStar(String name,CartoonType type, int popularityIndex) {
   setName(name);
   setType(type);
   setPopularityIndex(popularityIndex);
 }//end full constructor

 //getters and setters
 public void setName(String name) {
   this.name = name;
 }      
 public String getName() {
   return name;
 }
 public void setType(CartoonType type) {
   this.type = type;
 }
 public CartoonType getType() {
   return type;
 }
 public void setPopularityIndex(int popularityIndex){
   this.popularityIndex = popularityIndex;
 }
 public int getPopularityIndex(){
   return popularityIndex;
 }  
}//end of class CartoonStar

```

Here's a sample output for my code:

```
Please enter the name of the cartoon character: w

Please enter a number corresponding to the type of cartoon character below.

1 = FOX,2 = CHICKEN,3 = RABBIT,4 = MOUSE,5 = DOG,

6 = CAT,7 = BIRD,8 = FISH,9 = DUCK,10 = RAT

Please enter the type of cartoon character: 2

Please enter a cartoon popularity number from 1 to 10, with 10 being the highest: 2

More input? Enter 'yes' for more input, or 'no' to quit: yes

Please enter the name of the cartoon character: w

BUILD STOPPED (total time: 11 seconds)

```

I stopped the program at this point because it just doesn't let me move past this point. Is the issue with the loop in my main method? I've never made objects without explicitly naming them, so I'm confused as to how to create them and later be able to recall them from my arraylist.