Wejście skanera akceptujące ciągi pomijające każde inne wejście w pętli while. [duplikować]
To pytanie ma już tutaj odpowiedź:
Jak korzystać z java.util.Scanner, aby poprawnie odczytać dane wejściowe użytkownika z System.in i działać na nim? 1 odpowiedźW porządku, więc kod jest całkiem prosty. Generyczna klasa ourSet, która pobiera niektóre elementy, umieszcza ją w LinkedList i wykonuje pewne funkcje na dwóch zestawach.
Mój problem jest właściwie niezwiązany z ogólną koncepcją projektu, a bardziej z „interfejsu wejściowego użytkownika”, który stworzyłem. Chcę, aby zawierało ono niektóre Ciągi i dodało je do zestawu, a następnie odbierając ciąg „EXIT” (wszystkie czapki), aby wyjść z pętli i zrobić to samo dla następnego zestawu. Dzieje się tak, ponieważ pętla do while wysyła tylko 1, 3, 5 i ... dla wszystkich liczb nieparzystych.
package set.pkgclass;
import java.util.Scanner;
import java.util.LinkedList;
public class SetClass {
public static void main(String[] args) {
ourSet<String> set1 = new ourSet<String>();
ourSet<String> set2 = new ourSet<String>();
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<T>{
private LinkedList<T> 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 <T> void union(ourSet<T> s1, ourSet<T> 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 <T> void intersection(ourSet<T> s1, ourSet<T> 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 <T> void difference(ourSet<T> s1, ourSet<T> 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();
}
}