我有严重的问题需要了解扫描仪类的工作原理。的确,我想从这个输入中得到:
AAAA BBBG GREZZ
ADFG GTRE
FREZZ
将此输出作为ArrayList: [AAAA,BBBG,GREZZ,ADFG,GTRE,FREZZ]
我的代码如下:
System.out.println("list of words?");
Scanner scan3 = new Scanner(System.in);
scan3.useDelimiter("[\\s+\\n]");
ArrayList<String> test = new ArrayList<String>();
while(scan3.hasNext()){
String temp = scan3.next();
if(temp.equals("STOP")){
break;
}else{
test.add(temp);
}
}
System.out.println(test);
我的意见是:
AAAA BBBG GREZZ
ADFG GTRE
FREZZ STOP
我的输出是: [AAAA,BBBG,GREZZ,ADFG,GTRE,FREZZ]
我的问题有两个:
非常感谢你的帮助。
答案 0 :(得分:0)
只需使用String#split()
和合适的分隔符(听起来好像在这种情况下你需要"[ \\n]+"
(这是一个空格和\ n),但你可能想稍微调整一下,例如你可能想要在所有空格上拆分。
列表中空条目的原因是因为您只是扫描空格的单个字符。如果两个行结尾彼此相邻,则会匹配两次。您需要修改正则表达式,使其匹配多个字符。
答案 1 :(得分:0)
您的+
似乎位于错误的位置。请尝试使用scan3.useDelimiter("[\\s\\n]+");
关于,
您可能已经注意到,我在末尾添加字符串“STOP”以停止循环,因为条件scan3.HasNext()始终返回“true”,它是唯一的继续进行的方式吗?
您希望采用哪种其他方式?你建议使用什么其他停止条件?