Вход для сканера принимает строки, пропускающие каждый второй вход в цикле while. [Дубликат]

На этот вопрос уже есть ответ здесь:

Как использовать java.util.Scanner, чтобы правильно прочитать пользовательский ввод из System.in и действовать на него? 1 ответ

Хорошо, так что код довольно прост. Универсальный класс ourSet, который принимает некоторые элементы, помещает его в LinkedList и выполняет некоторые функции на двух наборах.

Моя проблема на самом деле совершенно не связана с общей концепцией проекта, ее больше вПользовательский интерфейс ввода "Я"мы создали. Я хочу, чтобы он взял несколько строк и добавить его в набор, а затем при получении строки "ВЫХОД" (все заглавные буквы), чтобы выйти из цикла, и сделать то же самое для следующего набора. Происходит то, что цикл do while отправляет только 1-е, 3-е, 5-е ... для всех нечетных чисел.

package set.pkgclass;

import java.util.Scanner; 
import java.util.LinkedList; 


public class SetClass {


public static void main(String[] args) {

    ourSet set1 = new ourSet();  
    ourSet set2 = new ourSet(); 
    Scanner input = new Scanner(System.in); 



    System.out.println("Please enter a string to put in set 1, "
            + "type EXIT (in all caps) to end.");


    do {

        set1.add(input.nextLine());

    }
    while (!"EXIT".equals(input.nextLine()));


    System.out.println("Please enter a string to put in set 2, "
            + "type EXIT (in all caps) to end");

    do {

        set2.add(input.nextLine());
    }
    while (!"EXIT".equals(input.nextLine()));



    ourSet.intersection(set1,set2); 
    ourSet.difference(set1, set2);
    ourSet.union(set1, set2);








     }
  }

class ourSet{




private LinkedList mySet = new LinkedList();



public void add(T element){      
    mySet.add(element);
}

public void remove(T element){        
    mySet.remove(element);
}

public boolean membership(T element){        
    if(mySet.contains(element) == true) {
        return true; 
    }

    else {
    return false;
    }
}


public static  void union(ourSet s1, ourSet s2){
    System.out.print("The union is: ");
    for (int i=0; i < s1.mySet.size(); i++) {
        T t = s1.mySet.get(i);
        if (!s2.mySet.contains(t)){
            s2.add(t);
            }

    }

    for (int i=0; i < s2.mySet.size(); i++){
        T t = s2.mySet.get(i);
        System.out.print(t+", ");
    }
    System.out.println();  


}
public static  void intersection(ourSet s1, ourSet s2){ 
    System.out.print("The intersection is: ");
    for (int i=0; i < s1.mySet.size(); i++) {
        T t = s1.mySet.get(i); 
        if (s2.mySet.contains(t)) {
            System.out.print(t+", ");
        }
    }
    System.out.println();

}

public static  void difference(ourSet s1, ourSet s2){
    System.out.print("The difference is: ");
    for (int i=0; i < s1.mySet.size(); i++) {
        T t = s1.mySet.get(i);
        if (!s2.mySet.contains(t)) {
            System.out.print(t+", ");
        }

    }
    System.out.println();  
   }
 }

Ответы на вопрос(3)

Ваш ответ на вопрос