当打印出用户输入作为一行中的单个单词时,我得到该行中所有单词的打印输出。
System.out.println(userInput.next());
然而,当我向ArrayList添加单词时,我似乎得到了随机的单词:
al.add(userInput.next());
有人可以向我解释发生了什么事吗?
感谢。
这是代码的完整副本:
import java.util.*;
public class Kwic {
public static void main(String args[]){
Scanner userInput = new Scanner(System.in);
ArrayList<String> al = new ArrayList<String>();
while(userInput.hasNext()){
al.add(userInput.next());
System.out.println(userInput.next());
}
}
}
答案 0 :(得分:9)
while(userInput.hasNext()){
al.add(userInput.next()); //Adding userInput call to ArrayList
System.out.println(userInput.next()); //Printing another userInput call
}
您不打印存储在ArrayList中的值,但实际上是另一次调用userInput.next()
<强>修订强>
@ Sheldon 这对我有用。
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
ArrayList<String> al = new ArrayList<String>();
while(userInput.hasNext()){
al.add(userInput.next());
System.out.println(al); //LINE CHANGED FROM YOUR QUESTION
}
}
我用输入测试了你的代码
1 2 3 4 5 6 7 8 9 0
然后我按了回车并得到了:
2
4
6
8
0
userInput.next()在添加到ArrayList的那个和System.out.println捕获的那个之间交替
答案 1 :(得分:5)
因为next()
会使用扫描程序中的 next 令牌。因此,当你有:
al.add(userInput.next());
System.out.println(userInput.next());
您实际上正在从扫描仪中消耗两个令牌。第一个是添加到ArrayList
,其他正在打印到System.out
。一种可能的解决方案是将令牌存储在局部变量中,然后将其添加到阵列并打印它:
while (userInput.hasNext()) {
String token = userInput.next();
al.add(token);
System.out.println(token);
}
答案 2 :(得分:2)
我会这样写:
import java.util.*;
public class Kwic {
public static void main(String args[]){
Scanner userInput = new Scanner(System.in);
List<String> al = new ArrayList<String>();
while(userInput.hasNext()){
al.add(userInput.next());
}
System.out.println(al);
}
}
答案 3 :(得分:1)
首先将所有值存储到ArrayList
,然后将它们打印出来会更有益。你现在正在做的是打印另一个userInput.next()
来电,这可能会或可能不会出现。
while(userInput.hasNext()){
al.add(userInput.next());
}
for(String s : al) {
System.out.println(s);
}
答案 4 :(得分:0)
al.add(userInput.next()); //Adding an Item call to ArrayList
System.out.println(userInput.next()); //Printing the next userInput with a call**
尝试此操作以在ArrayList中打印值
for(String s : al){
System.out.println(s);
}
答案 5 :(得分:0)
您不仅不打印该行中的所有字词,而且还没有将所有字词添加到ArrayList
中。由于您编码的方式,它会将每个替代词添加到ArrayList
并打印替代词。