Im learning java with "programmingbydoing" and i have a problem with Nim game, everything works fine apart from one thing, which is that both:
"System.out.print(n1 + ", choose a pile: ");" 
and
"System.out.print(n2 + ", choose a pile: ");"
is out printed twice after the first time.
Here is code:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Player one, enter your name: ");
        String n1 = input.nextLine();
        System.out.print("Player two, enter your name: ");
        String n2 = input.nextLine();
        int a = 3;
        int b = 4;
        int c = 5;
        int count = 1;
        System.out.println("A: "+a+" B: "+b+" C: "+c);
        nim_loop:while(a > 0 || b > 0 || c > 0) {
            while(count % 2 != 0 ) {
                System.out.print(n1+", choose a pile: ");
                String first = input.nextLine();
                if (first.contains("a") || first.contains("A")) {
                    System.out.print("How many to remove from pile " + first + "? ");
                    int second = input.nextInt();
                    count = count + 1;
                    a = a - second;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                    if(a <= 0 && b <= 0 && c <= 0){
                        break nim_loop;
                    }
                }
                else if (first.contains("b") || first.contains("B")) {
                    System.out.print("How many to remove from pile " + first + "? ");
                    int second = input.nextInt();
                    count = count + 1;
                    b = b - second;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                    if(a <= 0 && b <= 0 && c <= 0){
                        break nim_loop;
                    }
                }
                else if (first.contains("c") || first.contains("C")) {
                    System.out.print("How many to remove from pile " + first + "? ");
                    int second = input.nextInt();
                    count = count + 1;
                    c = c - second;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                    if(a <= 0 && b <= 0 && c <= 0){
                        break nim_loop;
                    }
                }
            }
            while(count % 2 == 0) {
                System.out.print(n2 + ", choose a pile: ");
                String third = input.nextLine();
                if (third.contains("a") || third.contains("A")) {
                    System.out.print("How many to remove from pile " + third + "? ");
                    int fourth = input.nextInt();
                    count = count + 1;
                    a = a - fourth;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                } else if (third.contains("b") || third.contains("B")) {
                    System.out.print("How many to remove from pile " + third + "? ");
                    int fourth = input.nextInt();
                    count = count + 1;
                    b = b - fourth;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                } else if (third.contains("c") || third.contains("C")) {
                    System.out.print("How many to remove from pile " + third + "? ");
                    int fourth = input.nextInt();
                    count = count + 1;
                    c = c - fourth;
                    System.out.println("A: " + a + " B: " + b + " C: " + c);
                }
            }
        }
        if (count % 2 != 0) {
            System.out.println("Game ended, Player " + n1 + " is a winner.");
        } else if (count % 2 == 0){
            System.out.println("Game ended, Player " + n2 + " is a winner.");
        } 
    }
}
And here are the pictures of what happens when i run it:

 
     
     
    