Вход для сканера принимает строки, пропускающие каждый второй вход в цикле 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();
}
}