接受字符串的扫描程序输入会跳过while循环内的所有其他输入。

【字号: 日期:2024-02-24浏览:48作者:雯心
如何解决接受字符串的扫描程序输入会跳过while循环内的所有其他输入。?

原因是,您打了input.nextLine() 两次 电话:

do { set1.add(input.nextLine());}while (!'EXIT'.equals(input.nextLine()));

比do-while更容易的方法是while:

while (!(String in = input.nextLine()).equals('EXIT')) { set1.add(in);}解决方法

好的,代码很简单。包含一些元素的通用类ourSet将其放入LinkedList中,并对这两个集合执行某些功能。

我的问题实际上与项目的总体概念无关,更多的是在我创建的“用户输入界面”中。我希望它接受一些字符串并将其添加到集合中,然后在接收字符串“EXIT”(全部大写)的同时退出循环,并对下一个集合进行相同的操作。发生的事情是do while循环仅发送所有奇数的1st,3rd,5th..。

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(); } }

相关文章: