Java 扫描仪,使用分隔符
我在使用Scanner类中的useDelimiter时遇到一些问题Java 扫描仪,使用分隔符,java,java.util.scanner,Java,Java.util.scanner,我在使用Scanner类中的useDelimiter时遇到一些问题 Scanner sc = new Scanner(System.in).useDelimiter("-"); while(sc.hasNext()) { System.out.println(sc.next()); } 如果我有这个输入 A-B-C 输出将是 A B 然后等到我再输入一个“-”,它就会打印出最后一个字符 但是,如果我不让用户输入数据,而是向扫描器插入一个字符串,代码就会工作。原因是什么?我该如何修复它?
Scanner sc = new Scanner(System.in).useDelimiter("-");
while(sc.hasNext())
{
System.out.println(sc.next());
}
如果我有这个输入
A-B-C
输出将是
A B
然后等到我再输入一个“-”,它就会打印出最后一个字符
但是,如果我不让用户输入数据,而是向扫描器插入一个字符串,代码就会工作。原因是什么?我该如何修复它?我不想使用StringTokenzier如果
扫描器
没有等待您输入另一个-
,那么它会错误地认为您已经输入完毕
我的意思是,扫描仪必须等待您输入-
,因为它无法知道下一次输入的长度
因此,如果用户想要键入a-B-CDE
,而您在C
处停下来喝了一口咖啡,它将无法获得正确的输入。(您期望[A,B,CDE]
,但它会得到[A,B,C]
)
当您以完整的字符串
传递它时,扫描器
知道输入的结尾在哪里,不需要等待另一个分隔符
我将如何做到这一点:
Scanner stdin = new Scanner(System.in);
String input = stdin.nextLine();
String[] splitInput = input.split("-", -1);
Scanner stdin = new Scanner(System.in);
String s = stdin.nextLine();
String[] splitInput = s.split("-", -1);
现在您将拥有一个字符串数组
,其中包含所有-
之间的数据
您可以使用另一个分隔符字符串使用分隔符(“-\n”)代码>
它可以与字符串参数一起工作,也可以从系统中读取。
在System.In的情况下,这要求您在该行末尾按enter键。我将如何执行以下操作:
Scanner stdin = new Scanner(System.in);
String input = stdin.nextLine();
String[] splitInput = input.split("-", -1);
Scanner stdin = new Scanner(System.in);
String s = stdin.nextLine();
String[] splitInput = s.split("-", -1);
现在,您将拥有一个包含所有-
之间数据的字符串数组。因此,除了使用一个接受完整输入的扫描器和另一个解析输入的扫描器外,别无选择。@klw,您只需要一个扫描器。
。String.split是否也会在字符串数组中添加空白?我以前使用split时记忆模糊。@klw,没有。如果你有字符串“A-B-C-D”。split(“-”)
你会得到数组[“A”,“B”,“C”,“D”]